JAVA关于多个按钮多个标签,点击不同的按钮让不同的标签发生变化

yjyddwj 2012-12-29 05:55:29
写了五个java文件,就是想让按钮被按一次,对应的面板发生一次变化,并且指示灯由红色变成绿色。
希望各位友人帮帮忙解决一下。困扰了好几天了。
第一个类:
import java.awt.Color;
import java.awt.GridLayout;

import javax.swing.JLabel;
import javax.swing.JPanel;


public class TestA {

private JLabel label;
private Light light;
private JPanel panel;
private String msg;

public TestA(String msg){

this.msg = msg;
light = new Light();
label = new JLabel(msg);
panel = new JPanel();

panel.setLayout(null);
light.setBounds(0,0,15,20);
panel.add(light);
label.setBounds(20,0,80,20);
panel.add(label);
}
public JPanel getP1(){
return panel;
}
}

第二个:
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

public class TestB {

private JButton jbt1;
private JButton jbt2;
private JButton jbt3;
private Light light;
private JPanel jp;

public TestB(){

jbt1 = new JButton("我想日");
jbt2 = new JButton("他想日");
jbt3 = new JButton("你想日");
light = new Light();
jp = new JPanel();

jp.setLayout(new GridLayout(3,1));
jp.add(jbt1);
jp.add(jbt2);
jp.add(jbt3);

jbt1.addActionListener(new mainSun());
jbt2.addActionListener(new mainSun());
jbt3.addActionListener(new mainSun());

}
public JPanel getP2(){
return jp;
}

//按钮监听器
/* 想实现点击第一个按钮,然后那个日本人的面板上设置整型变量自加一次,然后灯变成绿色
* 想实现点击第二个按钮,然后那个美国人的面板上设置整型变量自加一次,然后灯变成绿色
* 想实现点击第三个按钮,然后那个印度人的面板上设置整型变量自加一次,然后灯变成绿色*/
class mainSun implements ActionListener{
int num = 0;
public void actionPerformed(ActionEvent e) {

if(e.getSource() == jbt1){

light.turnOn();//灯的颜色不变 --
}else if(e.getSource() == jbt2){


}else {

}
}
}
}

第三个:
import java.awt.GridLayout;

import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.border.BevelBorder;

public class TestC {

private TestA a;
private TestA b;
private TestA c;

private JPanel jpp;

public TestC(){

a = new TestA("日本人");
b = new TestA("美国人");
c = new TestA("印度人");
jpp = new JPanel();

jpp.setLayout(new GridLayout(3,1));
jpp.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));


jpp.add(a.getP1());
jpp.add(b.getP1());
jpp.add(c.getP1());
}
public JPanel getJPP(){
return jpp;
}

}


第四个:
import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JPanel;


public class Light extends JPanel{

private static boolean light ;

public Light(){
light = false;
}

public void turnOn(){
light = true;
}

public void turnOff(){
light = false;
}

public void paintComponent(Graphics g){

super.paintComponent(g);

if(light == true){
g.setColor(Color.GREEN);
}
else{
g.setColor(Color.RED);
}
g.fillOval( 2, 5, 10, 10);
}

}


第五个,测试类:
import java.awt.BorderLayout;

import javax.swing.JFrame;



public class TestMain extends JFrame{

private JFrame frame;
//private TestA a;
private TestB b;
private TestC c;

public TestMain(){

b = new TestB();
c = new TestC();
frame = new JFrame("面板测试");

frame.setLayout(null);

c.getJPP().setBounds(180, 50, 100, 100);
frame.add(c.getJPP());

b.getP2().setBounds(20, 50, 100, 100);
frame.add(b.getP2());

frame.setSize(400,320);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {

new TestMain();
}

}
...全文
232 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
悲催的程序猿 2012-12-31
  • 打赏
  • 举报
回复
yjyddwj 2012-12-29
  • 打赏
  • 举报
回复
或者加QQ 185152262 远程求助,求帮忙解决!

58,453

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧