Tag: jtree

使用JTreeTable

我需要使用JTreeTable,但即使在搜索了几个小时后,我也找不到任何关于JtreeTable的精彩教程,甚至是一个我能理解的简单代码。 如果有人能给我一个很好的教程或描述JtreeTable使用的简单代码,那将会非常有帮助。

动态更改JTree中特定节点的图标

我已经看到很多在树实例化期间更改节点图标的示例,但我想要一种方法可以在以后动态更改单个节点的图标。 所以,在我的主代码中,我将自定义渲染器添加到我的树中: // Icon I want to set nodes to later ImageIcon checkIcon = new ImageIcon(“check.jpg”); // Creates tree with my nodes JTree tree = new JTree(nodes.top); // Create custom renderer Scenario1Renderer renderer = new Scenario1Renderer(); // Set to single tree selection tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); // Set tree to my custom renderer //renderer.setRendererIcon(greenIcon); tree.setCellRenderer(renderer); 我在渲染器中的代码是 public class […]

TreeCellRenderer:如何设置背景颜色?

我编写了一个自定义的TreeCellRenderer来更改组件外观。 一切正常,除了setBackground没有效果。 代码肯定是执行的,因为前景色总是正确地改变。 由于所选项目以蓝色呈现并且取消选择白色项目(没有自己编写该代码),我假设我的更改被JTree覆盖。 那么改变背景颜色的正确方法是什么? 这基本上是我的代码: JTree tree = new JTree(); tree.setCellRenderer(new MyCellRenderer()); /////// public class MyCellRenderer extends DefaultTreeCellRenderer{ @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean isSelected, boolean expanded, boolean leaf, int row, boolean hasFocus) { JComponent c = (JComponent) super.getTreeCellRendererComponent(tree, value, isSelected, expanded, leaf, row, hasFocus); DefaultMutableTreeNode node = (DefaultMutableTreeNode) value; MyData data […]

将“展开”按钮添加到没有子节点的JTree节点?

我想在我的JTree节点上添加“扩展”按钮,以表明它们是可扩展的。 问题是,在用户点击它们之前它们没有孩子(由于后台发生的处理)。 有没有什么方法可以将节点设置为父节点或者让孩子没有它实际上有孩子? 谢谢

将图标设置为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; […]

Java:如何以编程方式选择和扩展JTree中的多个节点?

我有一个JTree和一个awt.Canvas 。 当我从Canvas选择多个对象到objList ,我希望所有选定的项目都在JTree为选中状态。 这意味着,例如,如果我选择了2个对象,则应扩展其到root的路径,并且每个所选对象也应选择其对应的TreeNode 。 我的JTree有TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION 。 这是我使用的扩展function的示例: public void selectTreeNodes() { HashMap entities = …; Iterator it = entities.keySet().iterator(); while (it.hasNext()) { String str = it.next().toString(); MyEntity ent = entities.get(str); if (ent.isSelected()) { DefaultMutableTreeNode searchNode = searchNode(ent.getName()); if (searchNode != null) { TreeNode[] nodes = ((DefaultTreeModel) tree.getModel()).getPathToRoot(searchNode); TreePath tpath = new TreePath(nodes); tree.scrollPathToVisible(tpath); […]

复合JTree节点允许事件传递到下面的对象

我正在尝试创建一个JTree,其中一些节点是包含JLabel和JButton的复合对象。 Node表示JLabel显示的服务器和端口,JButton将使用Desktop API打开默认浏览器并转到URL。 我已经阅读了以下内容,并尽可能地密切关注它们。 节点显示我想要的方式(主要是 – 我可以处理以后更好)但当我尝试点击按钮时,JTree正在响应事件,而不是按钮。 java swing:为JTree项添加自定义图形按钮 http://www.java2s.com/Code/Java/Swing-JFC/TreeCellRenderer.htm https://stackoverflow.com/a/3769158/1344282 我需要知道如何允许事件通过JTree,以便它们由下面的对象(JButton或JLabel)处理。 这是我的TreeCellEditor: public class UrlValidationCellEditor extends DefaultTreeCellEditor { public UrlValidationCellEditor(JTree tree, DefaultTreeCellRenderer renderer) { super(tree, renderer); } @Override public Component getTreeCellEditorComponent(JTree tree, Object value, boolean isSelected, boolean expanded, boolean leaf, int row) { return renderer.getTreeCellRendererComponent(tree, value, true, expanded, leaf, row, true); } @Override public […]

使用JCheckBox帮助创建JTree

我有一个不寻常的情况,我需要一个JTree,每个节点包含2个复选框和一个标签(能够添加一个监听器,以告知何时检查任何潜在的复选框)。 我还需要根节点具有相同的布局(我假设这意味着创建一个带有2个JCheckBox和JLabel的JPanel),如果选中了根中的一个,则可以选择树下的所有复选框。 任何指导或例子? 我已经在这里查看了之前的问题和相关的例子……其中一些让我能够让树“看起来”,但没有给我一个实现其背后动作的方向。 谢谢!

展开折叠使用JTree延迟加载展开问题

我使用Lazy Loading实现了一棵树。 第一级节点是在树创建时创建的,其中仅当用户扩展任何特定节点时才创建子节点。 数据来自数据库,我们向数据库发出查询以填充子节点。 实现TreeExpansionListener并使用重写的treeExpanded方法实现。 在扩展时,我删除所选节点的所有子节点,进行数据库查询并将记录作为子节点添加到所选节点。 在将任何节点添加到树之前,会将虚拟子节点添加到节点。 使用DefaultMutableTreeNode。 到目前为止一切顺利,它按预期工作正常。 问题1 – 正如你所说,它是每次扩展的数据库调用,所以如果一个节点被折叠并再次展开,我将进行数据库跳转并再次处理…我的想法是如果已经扩展,则不加载节点… 问题2 – 如果我必须进行强制刷新,即重新加载树并保持扩展状态。 现在处于工作状态……如何解决上述问题1? 感谢任何帮助。

右键单击Java JTree的上下文菜单?

我正在尝试在Java JTree中实现弹出菜单。 我已经对DefaultTreeCellRenderer(更改节点外观)和DefaultTreeCellEditor(创建组件以附加事件侦听器)进行了分类,因为显然DefaultTreeCellRenderer.getTreeCellRendererComponent()返回的组件不能这样做吗?)。 我真的不想“编辑”节点,只需在节点右键单击时弹出菜单,但这是我现在想到的唯一方法…… 下面是我到目前为止的代码 – 我只想弄清楚如何捕获MouseEvents。 它有点工作,但很糟糕。 有什么更好的方法来完成我在这里要做的事情? private class My_TreeCellRenderer extends DefaultTreeCellRenderer { My_TreeCellRenderer() { super (); } public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); // set label text and tool tips setText(((My_Object)value).getTreeLabel()); setToolTipText(((My_Object)value).getTreeToolTip()); return this; […]