import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class MyGUI extends JFrame implements ActionListener
{
JButton btnA;
public MyGUI()
{
setTitle("Test GUI");
setSize(500, 500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
setLayout(null);
setLocationRelativeTo(null);
JButton btnA=new JButton("A");
btnA.setSize(100, 20);
btnA.setLocation(0, 0);
btnA.addActionListener(this);
add(btnA);
}
public void actionPerformed(ActionEvent e)
{
System.out.println(e.toString());
System.out.println("Action detected");
if(e.getSource().equals(btnA))
System.out.println("A was pressed");
}
}
我开始使用Java GUI。我有一个按钮。但是,当我单击该按钮时,从事件的toString()信息来看,即使应该执行,也不会执行第三条打印语句。它出什么问题了?
最佳答案
您在执行此行时声明一个局部变量:
JButton btnA=new JButton("A");
成员字段
btnA
保持未初始化。将行更改为:btnA=new JButton("A");
(顺便说一句,在这种情况下,使用
==
而不是调用equals()
是安全的,甚至可以更清晰地表达您的意图。)