我有一个运行在处女座的服务,偶尔需要提示用户并得到一些反馈。我已经创建了一个类来扩展JDialog类:
public class PPNDialog extends JDialog implements ActionListener, WindowListener{
public PPNDialog(JFrame frame, String title){
super(frame, title, true);
... //rest of dialog initialisation code
}
... //(other methods
}
另一个类创建一个新的JFrame并弹出对话框:
public class GUIStarter {
JFrame frame;
public GUIStarter(){
this.initialise();
dialog = new PPNDialog(this.frame, "");
dialog.setVisible(true);
}
private void initialise() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
}
一切都很好,除了当JDialog弹出时,它在我所有其他窗口(其他应用程序)后面的后台启动。问题是,由于JDialog不创建任务栏条目,除非最小化所有现有窗口,否则对话框不会被注意到。我知道这是因为GUI是从处女座开始的,但我想知道是否有可能将它向前推进,这样它就会在前景开始。我注意到当我使用JOptionPane时也会发生同样的事情。所有JOptionPane消息都出现在后台。只有当GUI从处女座服务启动时才会出现这种情况。如果我将GUI作为一个独立的应用程序运行,我就不会有这个问题。
尝试使用:setAlwaysOnTop(true);
在你的例子中:
dialog.setAlwaysOnTop(true);