我在JDialog窗口中有一个主框架和一种工具栏。我想要那个"工具栏"总是在我的程序之上,所以我写了这段代码:
public class Test {
private static JFrame mainFrame;
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
mainFrame = new JFrame("test");
mainFrame.setSize(800,600);
mainFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
mainFrame.setVisible(true);
MyDialog d = new MyDialog();
}
});
}
public static class MyDialog extends JDialog {
public MyDialog() {
super(mainFrame);
setAlwaysOnTop(true);
setSize(80,60);
setVisible(true);
mainFrame.addWindowListener(new WindowAdapter() {
@Override
public void windowActivated(WindowEvent e) {MyDialog.this.setAlwaysOnTop(true);}
@Override
public void windowDeactivated(WindowEvent e) {
MyDialog.this.toBack();
}
});
}
}
}
总结一下,我创建了一个mainFrame,然后是mainFrame拥有的JDialog。 JDialog将监听mainFrame。当mainFrame被取消激活时,对话框被设置为" toBack"。激活后,它将被设置为" alwaysOnTop"。
一切听起来不错,只是当我尝试从我的程序切换到另一个程序时,焦点似乎从MyApp到Firefox(例如),然后从Firefox到JDialog。我怎么能避免这种情况?