当使用Nimbus L&F时,我该如何设置JTree
中选定项的背景颜色?
旧答案中针对类似问题的建议在Nimbus中无效,因此我尝试了以下方法:
final UIDefaults def = new UIDefaults();
def.put( "Tree.background", Color.LIGHT_GRAY );
def.put( "Tree.selectionBackground", Color.RED );
def.put( "Tree.drawHorizontalLines", true );
def.put( "Tree.drawVerticalLines", true );
def.put( "Tree.leftChildIndent", 12 );
def.put( "Tree.rightChildIndent", 12 );
myTree.putClientProperty( "Nimbus.Overrides", def );
myTree.putClientProperty( "Nimbus.Overrides.InheritDefaults", false );
这对于背景、drawHorizontalLines
、drawVerticalLines
、leftChildIndent
和rightChildIndent
都有效,但无法为选择背景执行任何操作。
我还尝试设置“Tree.textForeground”、“Tree.foreground”和“Tree.textBackground”的各种颜色,但这些都没有效果。
我也尝试了:
final Painter<JComponent> painter = new Painter<JComponent>() {
@Override
public void paint( final Graphics2D g, final JComponent c, final int w, final int h ) {
g.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON );
g.setColor( Color.RED );
g.fillRect( 0, 0, w, h );
}
};
def.put( "Tree:TreeCell[Enabled+Selected].backgroundPainter", painter );
这也没有任何作用。