在JDialog之后需要两次点击JButton

时间:2012-05-07 22:18:58

标签: java swing modal-dialog jdialog

在创建基于Swing的应用时,我一直在努力解决一些问题。我有一个主要的JFrame,包括:

  1. JMenu的
  2. 包含JButton和JLabel的JPanel
  3. JButton与ActionListener链接。单击JMenu(MenuListener)会显示一个带有某种形式的JDialog。问题是,当JDialog关闭时(无论我是使用dispose()还是showVisible(false)都没有区别)我需要在它第一次触发之前单击JButton两次。从现在起,它通常只需点击一下即可。

    每当JDialog出现在前面时,就会出现问题。

    PS。 JDialog设置为模态,JFrame为父级。

2 个答案:

答案 0 :(得分:3)

这听起来像是焦点问题。

第一次点击将焦点恢复到应用,第二次点击按钮。通常情况下,当JDialog具有错误的父级并且无法返回焦点时,我已经看到了这一点。

答案 1 :(得分:1)

感谢您的回答。

我考虑发布一些代码,但它涉及4个类,所以会很长。

我之前也尝试过关注的事情,但没有任何帮助。有趣的是:如果我按new myDialog.showVisible(true)显示JDialog,它的行为就像我所描述的那样。但如果我使用这样的结构:

    SwingUtilities.invokeLater(new Runnable() {

        public void run() {
            new JDialog.setVisible(true);
        }
    });

它正常关闭并且在响应之前不需要单击父框架,但另一方面,显示的Dialog需要这样。另外,我不明白,打开Dialog光标后放在文本字段中我可以正常写,但是点击它上面的一些按钮我必须在对话框上单击一次,只有第二次和下次点击的行为就像我想要的那样

PS。像第二个包含示例中那样关闭对话框不会改变任何内容。