【发布时间】:2017-06-20 14:00:13
【问题描述】:
现在我正在为已经使用了一段时间的应用程序建立 Nimbus 外观。
该应用程序包含一些JTrees,我希望它们显示垂直和水平线。
在我之前使用的 java 版本 1.7 下,使用 UIDefaults 中的那些特定条目很容易设置:
UIManager.put("Tree.drawVerticalLines", true);
和
UIManager.put("Tree.drawHorizontalLines", true);
正如上面所暗示的,只要我使用带有 1.7 版本的 jre,这完全可以正常工作,只要我使用 1.8,JTree 中的垂直线就不会显示。
我只是想问一下是否有人知道这是否是 Java 1.8 下 Nimbus 的一个已知问题,如果是,有人知道这个问题的解决方案或解决方法吗?
编辑:这里有一些示例代码来澄清我的问题:
public class test
{
public static void main(String args[]) throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException
{
try {
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException
| UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
UIManager.put("Tree.drawVerticalLines", true);
UIManager.put("Tree.drawHorizontalLines", true);
UIManager.put("Tree.linesStyle", "dashed");
DefaultMutableTreeNode top = new DefaultMutableTreeNode("Root");
top.add(new DefaultMutableTreeNode("Branch1"));
top.add(new DefaultMutableTreeNode("Branch2"));
top.add(new DefaultMutableTreeNode("Branch3"));
((DefaultMutableTreeNode)top.getFirstChild()).add(new DefaultMutableTreeNode("Leaf1"));
((DefaultMutableTreeNode)top.getFirstChild()).add(new DefaultMutableTreeNode("Leaf2"));
JFrame frame = new JFrame();
JTree tree = new JTree(top);
frame.setSize(new Dimension(450,300));
JScrollPane scroll = new JScrollPane(tree);
frame.add(scroll);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
这只是一个示例代码,而不是我目前正在使用的实际软件,所以我认为问题在于我在两个代码中都犯了一个错误,或者是 java-version 1.8 的一些问题。
jdk1.7和jdk1.8的使用导致两种不同的结果:
jdk1.7
jdk1.8
如您所见,1.8 版本中的水平线不见了。
抱歉语法不好,我不是母语人士。
【问题讨论】:
-
如需尽快获得更好的帮助,请发帖minimal reproducible example 或Short, Self Contained, Correct Example。
标签: java swing jtree look-and-feel nimbus