关于Java7 ActionListener 的问题
以下是一小段代码,用来改变label上圆圈的颜色,理论上应该是点击“Change Color”以后颜色才会改变,实际上如果用鼠标改变窗口大小,颜色也会变
(MyDrawPanel类的代码没有粘在这里,不用理会...)
求原因...
谢谢
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class TwoButtons {
JFrame frame;
JLabel label;
/**
* @param args
*/
public static void main(String[] args) {
TwoButtons gui = new TwoButtons();
gui.go();
}
public void go() {
this.frame = new JFrame();
this.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton labelButton = new JButton("Change Lable");
labelButton.addActionListener(new LabelListener());
JButton colorButton = new JButton("Change Cirle");
colorButton.addActionListener(new ColorListener());
this.label = new JLabel("I'm a label");
this.label.setSize(50, 50);
MyDrawPanel drawPanel = new MyDrawPanel();
this.frame.getContentPane().add(BorderLayout.SOUTH, colorButton);
this.frame.getContentPane().add(BorderLayout.CENTER, drawPanel);
this.frame.getContentPane().add(BorderLayout.EAST, labelButton);
this.frame.getContentPane().add(BorderLayout.WEST, this.label);
this.frame.setSize(500, 500);
this.frame.setVisible(true);
}
class LabelListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
String[] strArray = new String[5];
strArray[0] = "label1";
strArray[1] = "label2";
strArray[2] = "label3";
strArray[3] = "label4";
strArray[4] = "label5";
int random = (int) (Math.random() * 4);
TwoButtons.this.label.setText(strArray[random]);
}
}
class ColorListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
TwoButtons.this.frame.repaint();
}
}
}