Java - Swing - JOptionPane 填充

标签 java swing modal-dialog joptionpane

我想从我的主窗体中显示一个新窗体。

当新窗体打开时,需要将其视为子窗体,因为单击父窗体会使子窗体获得焦点。 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/

相关文章:

javascript - react : AutoFocus on Input field inside Modal

java - 我期待 outOfMemory 但在这里我在 java 中得到 stackOverFlow

java - 在 Java 中的 JTable 列中显示条形图

javascript - 模态关闭按钮不起作用

javascript - 有没有办法做一个可访问的模式?

java - 在 JOptionPane 中将消息分成两行或多行

java - 相机移动时 LibGDX 瓦片 map 闪烁

Java 推断类型和列表 : Working through general Quicksort example

java - 更新 JPanel 的位置

java - 创建没有按钮的对话框