现在我正在为已经使用一段时间的应用程序建立Nimbus外观和感觉。 该应用程序包含一些JTree
我想要显示垂直和水平线。java版本1.8下的Nimbus JTree表示错误
在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版本1.8中遇到了一些问题。
jdk1.7和jdk1.8的使用会导致两种不同的结果:
jdk1.7
jdk1.8
正如你所能看到1.8版本的水平线缺失。
对不起,语言不好,我不是母语的人。
为了更快地获得更好的帮助,请发布[MCVE]或[简短,独立,正确的示例](http://www.sscce.org/)。 –