我最近一直试图将系统转换为统一的外观和感觉(在这种情况下为Nimbus)。但是某些组件需要改变默认设置,我不想仅仅因为单个组件而改变默认设置。JTree忽略LaF覆盖
我想覆盖JTree组件的行高亮颜色。我设法完全关闭它,但这不是我所追求的。
从阅读这里的各种问题,我已经尝试使用:
UIDefaults overrides = new UIDefaults();
overrides.put("Tree.selectionBackground", new Color(200,200,200));
overrides.put("nimbusSelectionBackground", new Color(200,200,200));
modelTree = new ModelTree(treeModel);
modelTree.putClientProperty("Nimbus.Overrides", overrides);
modelTree.putClientProperty("Nimbus.Overrides.InheritDefaults",true);
凡modelTree扩展了标准的JTree。如果没有这些覆盖,外观完全是默认的,我知道没有任何东西在压倒类中重写这些属性。
问题在于属性被忽略,颜色与默认值保持相同,而InheritDefaults为true,并且当行高亮为false时关闭。
我所追求的是简单的重新着色行高亮。
在此先感谢
编辑:
public static class treeTest extends JPanel {
public treeTest() {
super();
try {
UIManager.setLookAndFeel(NimbusLookAndFeel.class.getName());
} catch (Exception e) {
e.printStackTrace();
}
//UIManager.put("Tree.selectionForeground", Color.BLACK);
UIDefaults overrides = new UIDefaults();
overrides.put("Tree.selectionForeground", Color.BLACK);
JTree defaultsTree = new JTree();
JTree overiddenTree = new JTree();
overiddenTree.putClientProperty("Nimbus.Overrides", overrides);
overiddenTree.putClientProperty("Nimbus.Overrides.InheritDefaults", false);
add(defaultsTree);
add(overiddenTree);
}
}
我希望这是一个可以接受的SSCCE(这是我第一次做了一个)。 应该覆盖overiddenTree组件的选定行上的默认文本颜色,但不会。
取消注释将覆盖默认值的行执行相同的操作,但将为所有实例设置。
为更好地帮助越早张贴SSCCE/MCVE,短,可运行,编译, – mKorbel 2015-02-24 10:47:50
啊OFC,谢谢。我是新手,所以我会尝试尽快创建一个 – Saquesh 2015-02-24 11:52:23