我有一个组合框。在组合框中选择一个项目后,将打开新的JDialog。Swing组件和jdk版本问题
- 当我使用JDK 1.6_06,我能够在 的JDialog 点击按钮正常。
- 当我使用JDK 1.6_24, 然后我需要先点击 JDialog中的任何地方。然后只有点击 按钮的作品。首先我认为这个 是一个焦点问题。但是 组件可以与JDK 1.6_06正常工作。但是它仅在JDK 1.6_24中出现问题。
我试着谷歌它。但没有找到任何答案。有人有任何想法吗?
我有一个组合框。在组合框中选择一个项目后,将打开新的JDialog。Swing组件和jdk版本问题
我试着谷歌它。但没有找到任何答案。有人有任何想法吗?
@All:Aplogize for late reply。我正在尝试不同的场景。我发现这个问题与线程有关。看来组合框还没有完成它的工作,并打开jdialog。在组合框尝试完成其工作之后,焦点将丢失到父窗口。我试图在线程中打开对话框:
new Thread() {
public void run() {
// open dialog here
}
}.start();
它工作正常。现在我打算使用SwingWorker打开对话框:
SwingWorker worker = new SwingWorker() {
@Override
protected Object doInBackground() throws Exception {
// TODO Auto-generated method stub
// open dialog here
return null;
}
};
这也行得通。希望这是正确的方法。请让我知道,如果我做的是正确的事情。
SwingWorker没有用于这个目的。你可以发布你如何打开对话框吗?它是否在组合框的侦听器中打开? – KDM 2011-04-19 15:32:35
我不知道Java版本 - 但把swing.setVisible(true)放入SwingUtilities#invokeLater为我解决了这个问题。因人而异。
show()的使用已被弃用,更好的使用'setVisible(true)' – MByD 2011-04-15 10:31:52
纠正它。谢谢。 – KDM 2011-04-15 11:07:10
我试了一下,但没有为我工作:( – user613114 2011-04-19 14:12:20
您是否在同一个系统上使用两个JDK? (哪一个?)这看起来像一个窗口管理器问题。 – 2011-04-15 10:21:25
(趁机从u23升级到u24 :-) - 但无法复制。一个小的可运行示例演示了这个问题呢? – kleopatra 2011-04-15 11:06:15
任何发布SSCCE的机会? http://sscce.org/ – 2011-04-15 14:48:51