我想从我的主窗体中显示一个新窗体。
当新窗体打开时,需要将其视为子窗体,因为单击父窗体会使子窗体获得焦点。 JFrames 显然不是模态的,所以我使用:
JOptionPane.showOptionDialog(null, MYPANEL, "Title", JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, new Object[]{}, null);
...MYPANEL 看起来与我在表单中需要的相同。
除面板边缘和 JOptionPane 对话框框架之间有填充(大约 20px 左右)外,这 100% 按预期工作。
我怎样才能摆脱这个?
将面板的边框设置为带有 0 的空边框,因为尺寸没有任何变化。
最佳答案
Setting the border of the panel to an empty border with 0 as dimensions changed nothing.
您需要设置对话框内容面板的边框。不知道它是否适用于所有 LAF,但您可以将以下内容用于 Metal 和 Windows:
UIManager.put("OptionPane.border", new EmptyBorder(0, 0, 0, 0) );
参见 UIManager Defaults获取更多信息。
这将更改所有选项面板的属性。因此,您可能希望保存默认边框,创建您的选项 Pane ,然后恢复原始边框以创建其他选项 Pane 。
也许另一种选择是将 ContainerListener
添加到面板。然后您可以处理 componentAdded(...)
事件。生成事件后,您可以获取父面板并移除边框。
关于Java - Swing - JOptionPane 填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26500554/