2017-06-03 64 views
1

關注此列表http://thebadprogrammer.com/swing-uimanager-keys/,所有與字體和顏色相關的東西都可以,但是我試圖爲組件設置deafult高度,並且該列表上的每個組件都有一個xxxUI,我不知道如何實現。Java Swing UIManager with tableHeaderUI

我試圖

UIManager.put("TableHeaderUI", new TableHeaderUI() { 
     //it crashes empty aswell 
     @Override 
     public Dimension getPreferredSize(JComponent c) { 
      return super.getPreferredSize(c); 
     } 
    }); 

但在運行時它崩潰和每一個表頭走了,繼承人的錯誤信息......

UIDefaults.getUI() failed: no ComponentUI class for: javax.swing.table.JTableHeader[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=16777224,maximumSize=,minimumSize=,preferredSize=,draggedDistance=0,reorderingAllowed=true,resizingAllowed=true,updateTableInRealTime=true] 
java.lang.Error 
    at javax.swing.UIDefaults.getUIError(Unknown Source) 
    at javax.swing.MultiUIDefaults.getUIError(Unknown Source) 
    at javax.swing.UIDefaults.getUI(Unknown Source) 
    at javax.swing.UIManager.getUI(Unknown Source) 
    at javax.swing.table.JTableHeader.updateUI(Unknown Source) 
    at javax.swing.table.JTableHeader.<init>(Unknown Source) 
    at javax.swing.JTable.createDefaultTableHeader(Unknown Source) 
    at javax.swing.JTable.initializeLocalVars(Unknown Source) 
    at javax.swing.JTable.<init>(Unknown Source) 
    at javax.swing.JTable.<init>(Unknown Source) 

似乎沒有使用這個屬性,我的天堂」 t找到了一個具體的例子。

回答

1

您損壞了UIManager,因爲您將密鑰"TableHeaderUI"的對象類型爲 。

相反,對關鍵"TableHeaderUI"值應該是一個String (給人一種類 的實現完全合格的名稱接口javax.swing.plaf.TableHeaderUI)。

例如,你可以這樣做:

UIManager.put("TableHeaderUI", MyTableHeaderUI.class.getName()); 

與實現類是這樣的:

public class MyTableHeaderUI extends BasicTableHeaderUI { 

    // UIDefaults.getUI(JComponent) will call this method via reflection 
    public static ComponentUI createUI(JComponent h) { 
     return new MyTableHeaderUI(); 
    } 

    @Override 
    public Dimension getPreferredSize(JComponent c) { 
     return super.getPreferredSize(c); 
    } 
} 

(尚不得而知)特殊的一點是:你需要實現自己的 靜態createUI(JComponent)方法,否則你的UI類永遠不會被實例化。查看UIDefaults.getUI(JComponent)的javadoc。

+0

它的工作,謝謝你的準確性。 –