[英]Can't remove border of JInternalFrame | Nimbus L&F
我已經完成了有關如何使JInternalFrame
僅顯示其內容而沒有邊框的研究。
刪除頂部標題欄: 隱藏JInternalFrame的標題欄? -java
刪除周圍的邊框: 如何在JInternalFrame中刪除邊框?
一切運行正常,直到我使用Numbus UI測試我的工作,我可以取消標題欄,但周圍的邊界仍然卡在其中:
預期結果(適用於其他L&F)應為:
我認為應該解決一些與UI相關的設置( UIDefaults
或comp.putClientProperty()
); 但我不知道這是什么。
經過反復試驗,我發現了一個干凈但仍然不完整的解決方案。
我要做的就是將JInternalFrame
的UI更改為其他任何UI。 由於我刪除了標題欄和邊框,因此新的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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.