簡體   English   中英

無法刪除JInternalFrame的邊框| 雨雲L&F

[英]Can't remove border of JInternalFrame | Nimbus L&F

我已經完成了有關如何使JInternalFrame僅顯示其內容而沒有邊框的研究。

刪除頂部標題欄: 隱藏JInternalFrame的標題欄? -java

刪除周圍的邊框: 如何在JInternalFrame中刪除邊框?

一切運行正常,直到我使用Numbus UI測試我的工作,我可以取消標題欄,但周圍的邊界仍然卡在其中:

在此處輸入圖片說明

預期結果(適用於其他L&F)應為:

在此處輸入圖片說明

我認為應該解決一些與UI相關的設置( UIDefaultscomp.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM