使用启动了许多后台进程的Java应用程序。
如果出现问题,JOptionPane
会弹出一些常规信息。
工作站有多个显示器,JOptionPane
可能会出现
他们中的任何一个。
没有关联的窗口可用作JOptionPane
的“父级”。
有没有办法指定JOptionPane
应该出现在哪个监视器上?
答案 0 :(得分:2)
如果通过实例化直接使用JOptionPane
,则可以指定对话框的显示位置。例如:
JOptionPane pane = new JOptionPane("Hi!");
JDialog dialog = pane.createDialog("Look at me");
dialog.setVisible(true);
在示例中,在致电dialog.setVisible()
之前,您可以定位对话框,例如:
dialog.setBounds(100, 100, 100, 100);
要在显示器上显示非默认对话框,您必须获取所需显示的边界(Rectangle
),并且可以将对话框放置在该区域内。
以下是如何获取显示列表(及其界限)的方法。代码取自GraphicsConfiguration
的Javadoc:
Rectangle virtualBounds = new Rectangle();
GraphicsEnvironment ge = GraphicsEnvironment.
getLocalGraphicsEnvironment();
GraphicsDevice[] gs =
ge.getScreenDevices();
for (int j = 0; j < gs.length; j++) {
GraphicsDevice gd = gs[j];
GraphicsConfiguration[] gc =
gd.getConfigurations();
for (int i=0; i < gc.length; i++) {
virtualBounds =
virtualBounds.union(gc[i].getBounds());
}
}