2012-05-07 75 views
2

我一直在根据Swing创建我的应用时遇到了一些问题。我有它由一个主要的JFrame:JButton需要在JDialog后点击两次

  1. JMenu的含有一个JButton和JLabel

的JButton与ActionListener的链接

  • JPanel的。点击JMenu(MenuListener)以某种形式出现一个JDialog。问题是,当JDialog被关闭时(我用dispose()或showVisible(false)来做它并没有什么区别),我需要在它第一次触发前两次单击JButton。从现在开始,它通常只需点击一下即可。

    每次JDialog出现时,都会出现问题。

    PS。 JDialog被设置为模式,以JFrame作为父项。

  • +4

    我不确定我们如何根据所提供的信息为您提供帮助。您的代码中存在一个错误,在我们开始能够帮助您之前,需要通过调试将其隔离。 –

    +3

    为了更快提供更好的帮助,请发布[SSCCE](http://sscce.org/)。 –

    回答

    3

    这听起来像一个焦点问题。

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

    1

    谢谢你的回答。

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

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

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

    它正常关闭和父帧不需要响应之前被点击,但另一方面显示的对话框需要如此。另外,我不明白,打开对话框后,文本字段中,我可以正常写入,但点击它的一些按钮,我必须点击一次对话框,只有第二次和下一次点击行为就像我想。

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