我对Java还不太熟悉,所以我不知道哪里出了问题。这里有一段代码,执行时应该会打开一个窗口,但每当我在
ButtonHandler
类中扩展ColoredWordsExperiment
类时,窗口会无限快速地弹出,几乎每次都导致我的电脑崩溃。如果我省略扩展,则可以正常工作,但是我就不能在ButtonHandler
类中使用ColoredWordsExperiment
类的对象了...下面是代码(为了避免过长,我省略了一些不重要的东西)。public class ColoredWordsExperiment {
JFrame frame;
ButtonHandler buttonHandler;
ColoredWordsExperiment(){
frame = new JFrame("Colored Words Experiment");
frame.setSize(1200, 150);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button1 = new JButton("Matching");
label1 = new JLabel("test");
label1.setPreferredSize(new Dimension(90, 40));
JPanel labelContainer = new JPanel();
labelContainer.add(label1);
JPanel buttonContainer = new JPanel();
buttonContainer.add(button1);
frame.add(buttonContainer, BorderLayout.SOUTH);
frame.add(labelContainer, BorderLayout.NORTH);
buttonHandler = new ButtonHandler();
button1.addActionListener(buttonHandler);
}
public static void main(String[] arg) {
new ColoredWordsExperiment();
}
}
-
public class ButtonHandler extends ColoredWordsExperiment implements ActionListener {
@Override
public void actionPerformed(ActionEvent e){
if (e.getActionCommand().equals("Matching")) {
System.out.println("Matching");
label1.setText("Text changed");
}
}
}
ColoredWordsExperiment
实例的引用传递给构造函数。因此使用buttonHandler = new ButtonHandler(this);
- Justin