java swing 用Panel来实现变换颜色!请看例子!(帮忙看下这个很小的例子哪错了)

importjava.awt.BorderLayout;importjava.awt.Color;importjava.awt.event.ActionEvent;imp... import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class test extends JFrame{

//创建组件
JPanel jp1 = new JPanel();
JPanel jp2 = new JPanel();

JButton jb1 = new JButton("下一个");
JButton jb2 = new JButton("返回");

//构造函数
public test() {
jp1.setBackground(Color.RED);
jp2.setBackground(Color.blue);

jp1.add(jb1);
jp2.add(jb2);

add(jp2);
add(jp1);

//添加监听
jb1.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
jp1.setVisible(false);
jp2.setVisible(true);

}

});

//添加监听
jb2.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
jp2.setVisible(false);
jp1.setVisible(true);
}

});

setLocationRelativeTo(null);
pack();
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}

//主函数
public static void main(String[] args) {
new test();
}
}

请问哪里错啦!为什么没有效果啊!
展开
 我来答
popo_9872
2011-04-20
知道答主
回答量:13
采纳率:0%
帮助的人:0
展开全部
public class test extends JFrame{
//创建组件
JPanel jp1 = new JPanel();

JButton jb1 = new JButton("下一个");

//构造函数
public test() {
jp1.setBackground(Color.RED);
jp1.add(jb1);

add(jp1);

//添加监听
jb1.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
//============================================
//在这里控制变颜色就可以了
if(jp1.getBackground().equals(Color.RED)){
jp1.setBackground(Color.blue);
}else{
jp1.setBackground(Color.RED);
}
//============================================
}
});

setLocationRelativeTo(null);
pack();
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}

//主函数
public static void main(String[] args) {
new test();
}
}
这个样就可以了,用一个Panel 就可以了
yujingtaojing
2011-04-19 · TA获得超过467个赞
知道小有建树答主
回答量:1108
采纳率:0%
帮助的人:492万
展开全部
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.test;

import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
*
* @author Administrator
*/
public class FrameTest extends JFrame {
//创建组件

JPanel jp1 = new JPanel();
JPanel jp2 = new JPanel();
JButton jb1 = new JButton("下一个");
JButton jb2 = new JButton("返回");

//构造函数
public FrameTest() {
jp1.setBackground(Color.RED);
jp2.setBackground(Color.blue);

jp1.add(jb1);
jp2.add(jb2);

Container c = this.getContentPane();

c.setLayout(new FlowLayout());
c.add(jp1) ;
c.add(jp2) ;
//add(jp2);
//add(jp1);

//添加监听
jb1.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
jp1.setVisible(false);
jp2.setVisible(true);

}
});

//添加监听
jb2.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
jp2.setVisible(false);
jp1.setVisible(true);
}
});

//setLocationRelativeTo(null);
pack();
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}

//主函数
public static void main(String[] args) {
new FrameTest();
}
}

你没有给你的jpanel定位,两个panel重合了。
追问
大哥,我是想用这个办法来实现CardLayout的效果啊!
即:点一下按钮,变换一下颜色,再点一下按钮颜色又变会来了!
再帮忙看下吧!多谢啦!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乳八筒
2011-04-19 · TA获得超过112个赞
知道答主
回答量:77
采纳率:0%
帮助的人:60.5万
展开全部
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class test extends JFrame {

// 创建组件
JPanel jp1 = new JPanel();
JButton jb1 = new JButton("下一个");

boolean change = true;

// 构造函数
public test() {
jp1.setBackground(Color.RED);
jp1.add(jb1);
add(jp1);

// 添加监听
jb1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(change){
jp1.setBackground(Color.blue);
jb1.setText("返回");
change = false;
}
else{
jp1.setBackground(Color.RED);
jb1.setText("下一个");
change = true;
}
}

});

setLocationRelativeTo(null);
pack();
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}

// 主函数
public static void main(String[] args) {
new test();
}
}
这样就行,没必要用两个
追问
大哥,我是想用这个办法来实现CardLayout的效果啊!
即:点一下按钮,变换一下颜色,再点一下按钮颜色又变会来了!
再帮忙看下吧!多谢啦!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式