我已经研究过如何让JInternalFrame
只展示没有边框的内容。
删除顶部标题栏: hiding title bar of JInternalFrame? -java
删除周围的边框: how to remove the borders in JInternalFrame?
一切顺利,直到我用Numbus UI测试我的工作,我可以关闭标题栏,但周围的边界卡在那里:
预期结果(适用于其他L& Fs)应为:
我假设有一些与UI相关的设置应该解决它(UIDefaults
或comp.putClientProperty()
);但我无法弄清楚它是什么。
答案 0 :(得分:0)
经过反复试验,我找到了一个干净但仍不完整的解决方案。
我所要做的就是将JInternalFrame
的用户界面改为其他任何用户界面。
新UI不会进行任何实际渲染,因为我删除了标题栏和边框。
此解决方案不完整, 代码中的任何地方请勿打电话:
SwingUtilities.updateComponentTreeUI();
这将导致内部框架重置回默认UI。
修改强> 最后找到了解决上述重置问题的方法。只是阻止Swing安装除我的自定义UI之外的任何其他内容。
使用JInternalFrame
的子类:
@Override
public void updateUI() {
LookAndFeel laf = UIManager.getLookAndFeel();
try {
UIManager.setLookAndFeel(new javax.swing.plaf.metal.MetalLookAndFeel());
} catch (UnsupportedLookAndFeelException e) {
}
super.updateUI();
try {
UIManager.setLookAndFeel(laf);
} catch (UnsupportedLookAndFeelException e) {
}
}
这实际上忽略了设置UI的任何更改,但我对它不满意。它会重置整个外观,并可能导致可能导致不需要的LaF设置的竞争条件。
我仍然在寻找解决方案,只将此组件设置为Metal。