JDialog出现在屏幕的左上角,当我将它的位置设置为其父级的中心时

时间:2015-03-31 18:17:07

标签: java swing dialog

在我将对话框初始化为

之前
  addQuestionDialog = new JDialog(SwingUtilities.windowForComponent(this),"Add    question);

我通过调用:

将对话框的位置设置为其父对象的中心
addQuestionDialog.setLocationRelativeTo(this)

这可以在其父对象的中心显示对话框,但是当我将对话框设置为模态对话框时,它会完全忽略set方法并在屏幕的左上角显示对话框。

addQuestionDialog = new JDialog(SwingUtilities.windowForComponent(this),"Add question", Dialog.ModalityType.DOCUMENT_MODAL);

2 个答案:

答案 0 :(得分:2)

  

然而,当我将对话框设置为模态对话框时,它会完全忽略set方法并在屏幕的左上角显示对话框。

代码的顺序应为:

dialog.setLocationRelativeTo(..);
dialog.setVisible(true );

我猜你正在使用:

dialog.setVisible(true );
dialog.setLocationRelativeTo(..); // this is not executed until the dialog is closed.

答案 1 :(得分:0)

此JDialog代码序列对我有用:

   setModal(true)
   pack()
   setLocationRelativeTo(frame)
   setVisible(true)

在pack()行之前放置setLocationRelativeTo(frame)行会导致对话框偏心放置。有趣。:)