2014-10-22 78 views
1

从我的主窗体中我想显示一个新窗体。Java - Swing - JOptionPane填充

当新窗体被打开时,需要将其视为一个孩子,因为点击父窗口提供了孩子的注意力。 JFrames没有明显模态的,所以我使用:

JOptionPane.showOptionDialog(null, MYPANEL, "Title", JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, new Object[]{}, null); 

...其中MYPANEL看起来与我需要在我的形式。

这个工作原理是100%,除了面板边缘和JOptionPane对话框之间有填充(大约20px左右)之外。

我该如何摆脱这个?

将面板的边框设置为0的空边框,因为尺寸没有改变。

+3

制作你自己的对话框,它使用一个'JDialog' – MadProgrammer 2014-10-22 04:56:45

回答

3

将面板的边框设置为0的空边框,因为尺寸没有任何变化。

您需要设置对话框内容窗格的边框。不知道这是否会在所有LAF的工作,但你可以使用金属和Windows以下内容:

UIManager.put("OptionPane.border", new EmptyBorder(0, 0, 0, 0)); 

更多信息请参见UIManager Defaults

这将更改所有选项窗格的属性。因此,您可能需要保存默认边框,创建选项窗格,然后恢复原始边框以创建其他选项窗格。

也许另一种选择是将ContainerListener添加到面板。然后你可以处理componentAdded(...)事件。事件生成时,您可以获取父面板并删除边框。