【发布时间】:2015-04-25 19:24:55
【问题描述】:
我最近一直在尝试将系统转换为统一的外观(在本例中为 Nimbus)。但是,某些组件需要更改默认值,我不想仅仅因为单个组件而更改默认值。
我正在尝试覆盖 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 为真,当它为假时,行高亮被关闭。
我所追求的是对行高亮进行简单的重新着色。
提前致谢
编辑:
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,简短、可运行、可编译,
-
啊,谢谢。我对这一切都很陌生,所以我会尽快创建一个
标签: java swing nimbus uimanager uidefaults