По какой-то странной причине, когда я реализую JTree
в java, я не вижу линий расширения (под углом) на Mac OSX; но когда дерево расширяется, чтобы показать все узлы, я вижу их в Windows. Я пробовал tree.putClientProperty("JTree.lineStyle", "Angled")
, но ничего не получаю.Реализация JTree
Вторая проблема вопроса, на OSX снова: у меня есть изображение для корня, которое также не показано полностью, что-то вырезано сверху и снизу.
DefaultMutableTreeNode root = new DefaultMutableTreeNode(userId + " Album List");
albTree = new JTree(root);
albTree.setCellRenderer(new IconRenderer());
albTree.putClientProperty("JTree.lineStyle", "Angled");
albTree.setFont(new Font("Segoe UI", Font.PLAIN, 20));
albTreeModel = (DefaultTreeModel) albTree.getModel(); albTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
class IconRenderer extends DefaultTreeCellRenderer {
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
// start with default behavior
super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
// customize based on local conditions/state
DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
Icon openIcon = renderer.getDefaultOpenIcon();
Icon rootIcon = new ImageIcon("images/user-1.png");
if (node == nonAdminFrame.root) {
setIcon(rootIcon);
}
else if (nonAdminFrame.root.isNodeChild(node)) {
setIcon(openIcon);
}
return this;
}
}
Угловая для кроссплатформенной LookAndFeel (MetalLookAndFeel) – mKorbel
, что вы предлагаете? – jrdnsingh89
Я не пользователь OSX, можете ли вы изменить свой код на MetalLookAndFeel, если это правда? – mKorbel