java - JButton 对 actionListener 无响应

标签 java jbutton actionlistener

我在使用 actionListener 时遇到问题。我创建了自己的简单对话框,其中只有两个 JButton - 是和否。当我单击按钮时,actionListener 没有响应。

这是我的代码:

private void showInfoNewUML() {        
    Dimension buttonsSize = new Dimension(60, 25);
    Dimension programSize = new Dimension(1200, 700);
    final JDialog dialogWindow = new JDialog(this, "Erase actual UML diagram"
            + " with his files", true);        
    JTextArea descDialogWindow = new JTextArea("Do you really erase actual\n"
            + "UML diagram with his files?   ");
    descDialogWindow.setEditable(false);
    descDialogWindow.setBackground(new Color(220, 220, 220));
    descDialogWindow.setBorder(null);
    dialogWindow.getContentPane().setBackground(new Color(220, 220, 220));
    dialogWindow.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    dialogWindow.setModal(true);
    dialogWindow.setResizable(false);
    dialogWindow.setLayout(new FlowLayout());
    dialogWindow.setSize(310, 100);
    dialogWindow.setLocation((int) programSize.getWidth() / 2,
            (int) programSize.getHeight() / 2);
    JButton buttonYes = new JButton("Yes");
    JButton buttonNo = new JButton("No");
    buttonYes.setPreferredSize(buttonsSize);
    buttonNo.setPreferredSize(buttonsSize);
    dialogWindow.add(descDialogWindow);
    dialogWindow.add(buttonYes);
    dialogWindow.add(buttonNo);
    dialogWindow.setVisible(true);

    buttonYes.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            buttonAnoActionPerformed(e);
        }

        private void buttonAnoActionPerformed(ActionEvent e) {
            dialogWindow.setVisible(false);
        }
    });

    buttonNo.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            buttonNeActionPerformed(e);
        }

        private void buttonNeActionPerformed(ActionEvent e) {
            dialogWindow.setVisible(false);
        }
    });
}

我想在单击按钮后关闭此对话框。当我单击右上角的十字按钮时,对话框窗口将关闭。

感谢您帮助解决此问题。

最佳答案

尝试在调用 dialogWindow.setVisible(true); 之前添加 ActionListener。

您的对话框是模态的,因此 showInfoNewUML 将在 dialogWindow.setVisible(true); 处阻塞,直到对话框关闭之后,此时已经来不及注册任何有用的信息了听众。

关于java - JButton 对 actionListener 无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10036385/

相关文章:

JavaFX 控件在使用 Shape3D 时不接收鼠标事件

java - Wicket 6 DefaultNestedTree 未在文件夹单击时展开

java - 按下 JButton 并按下 Enter 键

java - 单击按钮时如何显示新的 Jframe

java - java中如何在函数名称和实际函数之间建立联系

java - 如何正确等待 ActionListener 被执行?

Java 8 相当于 (RxJava) Observable#onComplete()

java - 考虑到其创建顺序,如何管理片段和 Activity ?

java - 自定义渐变按钮 - 看不到文本

java - doClick() 和西蒙 : All buttons will unpress at the same time instead of individually