2013-07-27 17 views
4

我有一个应用程序使用JOptionPane.show*方法在显示应用程序主窗口之前通知 用户有关各种条件。 在多屏幕设置中,这些始终显示在第一个屏幕上。这通常只是 轻微的烦恼,但当0屏幕关闭或断开时会成为问题。指定单独的JOptionPane的目标屏幕

正常的Windows可以正确使用GraphicsConfiguration通过MouseInfo获得 放置,但我不能找到一种方法来传递给JOptionPane。我可以 既不使用主窗口来锚定对话框,因为在应用程序启动的那个阶段没有主要的 窗口。在可能的对话框中有 关于过时的java版本的警告,所以在 错误之前显示主窗口是不可选的,因为用户的Java运行时可能甚至不能够显示主窗口 。

有没有一种方法可以指定目标屏幕而不需要重新实现JOptionPane的主要部分 ?

回答

3

您可以从JOptionPane创建一个JDialog,然后显示您想要的任何位置的对话框。

由于每JOptoinPane API

JOptionPane pane = new JOptionPane(arguments); 
pane.set.Xxxx(...); // Configure 
JDialog dialog = pane.createDialog(parentComponent, title); 
// here set the dialog's location 
dialog.setVisible(true); 

编辑:或者,你可以简单地创建自己的JDialog窗口从头按安德鲁的大评论(现在已经不存在?)。

+1

对不起,在我看到你很好的答案后,我觉得评论是多余的,并删除它。 :P –

+0

我曾经希望自己能够在手动放置时不用肮脏的技巧来做到这一点,但这是有效的。谢谢!对于需要此功能的其他人:请记住将GraphicsConfiguration边界的偏移量记入帐户。 – kiheru