Tag: treecellrenderer

更改DefaultMutableTreeNode的文本样式

我创建了一个自定义JTree。 可以过滤该树以仅显示包含给定条件(字符串)的那些节点。 现在,有没有办法只扩展那个包含搜索字符串的DefaulMutableTreeNode部分? 如果树节点具有label =“StackOverflow”并且用户正在搜索包含“Stack”的节点,则“StackOverflow”节点将以“Stack”部分粗体呈现。 怎么实现呢?

渲染时更改JTree行高resize的行为

我想只在节点是SELECTED时使用包含三个文本字段的自定义TreeCellRenderer,而在节点未选择时使用默认渲染器。 问题是虽然我为面板设置了合适的首选大小和最小大小,但JTree不会更新编辑的行高。 相反,当我使用相同的面板作为编辑器时,它被正确呈现。 有人可以解释为什么会这样吗? 是否有推荐的方法来实现类似于编辑的渲染大小调整行为? JTree是否提供了直接设置它的方法,还是有必要扩展JTree或(更糟)L&F? 注意:在深入研究BasicTreeUI.startEditing(TreePath path, MouseEvent event)方法后,我注意到以下几行代码。 他们似乎负责编辑大小调整: if(editorSize.width != nodeBounds.width || editorSize.height != nodeBounds.height) { // Editor wants different width or height, invalidate // treeState and relayout. editorHasDifferentSize = true; treeState.invalidatePathBounds(path); updateSize(); // To make sure x/y are updated correctly, fetch // the bounds again. nodeBounds = getPathBounds(tree, path); } else […]

将图标设置为Jtree中的每个节点

我想为我的JTree中的每个节点设置一个不同的图标,实际上我是从数据库加载每个节点,用“while”,我将每个图标设置为root,leaf或parent。 喜欢这个: 我的所有声明都是全球性的: private ResultSet myResultSet; protected DefaultTreeModel treeModel; private DefaultMutableTreeNode rootNode,childNode,parent1,parent2; 这是我设置节点的代码: myResultSet=rtnNodes(); /*Method that returns a RS with my nodes*/ while(myResultSet.next()){ switch(myResultSet.getInt(1)){ /*The first column is the type of node: root, parent, leaf…*/ case 0: treeModel = new DefaultTreeModel((rootNode=new DefaultMutableTreeNode(myResultSet.getString(2)))); break; /*root node*/ case 1: case 4: parent1 = parent2 = makeNode(rootNode); break; […]

如何使JPanel的组件作为JTree中的节点可用?

当我点击JButton时没有任何反应。 这甚至适用于我放入的JScrollPane(它显示但不会滚动)。 为什么JPanel不在前面? 我觉得有些东西必须被覆盖。 它应该是不是箭头的部分的扩展吗? 如果是这样,那怎么办? import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; import javax.swing.tree.*; public class test { public test() { JTree tree = createTree(); tree.setToggleClickCount(0); tree.setRowHeight(50); tree.setCellRenderer(new PanelRenderer()); JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(new JScrollPane(tree)); f.setSize(400, 400); f.setLocation(200, 200); f.setVisible(true); } private JTree createTree() { int children = 4; int grandChildren […]

JTree:为各个组设置自定义打开/关闭图标

我知道如何在JTree中设置自定义叶子图标 我知道如何为所有组节点设置自定义关闭/打开图标 但我不能根据组节点名称设置自定义打开/关闭图标,例如节点可以称为电子邮件(因此有一个包络图标很好)或者一组可能被称为任务等等。 我试图通过重写类DefaultTreeCellRenderer的getTreeCellRendererComponent方法来做到这一点 但是更改当前node的icon只会影响下一个节点! 如何为各个组设置自定义打开/关闭图标? 请看一下我的代码: Employee.java package com.ehsunbehravesh.swing; import java.util.Random; public class Employee { public String name; public int id; public boolean isBoss; public Employee[] employees; public Employee(String name, boolean isBoss) { this.name = name; this.isBoss = isBoss; this.id = new Random(System.currentTimeMillis()).nextInt(Integer.MAX_VALUE); } @Override public String toString() { return this.name; } static String […]