Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java gui在操作侦听器侦听事件后不打印_Java_User Interface - Fatal编程技术网

Java gui在操作侦听器侦听事件后不打印

Java gui在操作侦听器侦听事件后不打印,java,user-interface,Java,User Interface,代码不会在ide文本字段中输出“Works”消息。如何使程序在ide的文本中输出我的消息?多谢各位 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class test extends JFrame { private JButton button1; public test() { JFrame frame = new JFrame("Test Program

代码不会在ide文本字段中输出“Works”消息。如何使程序在ide的文本中输出我的消息?多谢各位

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class test extends JFrame {

    private JButton button1;

    public test() {
        JFrame frame = new JFrame("Test Program");
        JPanel panel = new JPanel();
        JButton button1 = new JButton("Click me PLEASE!");
        panel.setBackground(Color.red);
        panel.add(button1);
        frame.getContentPane().add(panel);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        frame.setSize(800, 800);
        Listener1 listen = new Listener1();
        button1.addActionListener(listen);

    }

    public static void main(String[] args) {
        new test();
    }

    private class Listener1 implements ActionListener {

        public void actionPerformed(ActionEvent event) {
            if (event.getSource() == button1) {
                System.out.println("Works!");
            }
        }
    }

您正在比较的
button1
实例不是触发事件的
button1
实例

基本上,你是在隐藏你的变量

// Declare instance variable here...
private JButton button1;

public test() {
    //...
    // Redeclared as local variable here
    JButton button1 = new JButton("Click me PLEASE!");
如果你加上

System.out.println("button1 = " + button1);
对于您的
Listener1
,您会发现它是
null

删除本地声明

    button1 = new JButton("Click me PLEASE!");

如果删除本地声明,则无法在test()方法中使用button1。我肯定还有别的地方出了问题。在删除本地声明后,我得到了这个消息:@user3562855:我建议您听一下mad的记录,并按照他说的做。线程“main”中的异常java.lang.NullPointerException位于java.awt.Container.addImpl(Container.java:1090)位于java.awt.Container.add(Container.java:410)at test.(test.java:24)at test.main(test.java:35)java结果:1@user3562855听起来您没有初始化按钮,而是删除了整行,而不是删除
JButton
声明。。。