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()是安全的,甚至可以更清晰地表达您的意图。)

09-10 11:23