2017-06-03 110 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

它的工作,谢谢你的准确性。 –