import java.awt.*;
import java.awt.event.*;
import java.util.EventObject;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
public class ELS
{
public static void main(String args[])
{
JFrame frame = new JFrame("Editable Tree");
JTree tree = new JTree();
tree.setEditable(true);
DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer) tree
.getCellRenderer();
TreeCellEditor editor = new LeafCellEditor(tree, renderer,
new LeafEditor());
tree.setCellEditor(editor);
// This allows the edit to be saved if editing is interrupted
// by a change in selection, focus, etc -> see method detail.
tree.setInvokesStopCellEditing(true);
JScrollPane scrollPane = new JScrollPane(tree);
frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
frame.setSize(300, 350);
frame.setVisible(true);
}
}
class LeafCellEditor extends DefaultTreeCellEditor
{
public LeafCellEditor(JTree tree, DefaultTreeCellRenderer renderer)
{
super(tree, renderer);
}
public LeafCellEditor(JTree tree, DefaultTreeCellRenderer renderer,
TreeCellEditor editor)
{
super(tree, renderer, editor);
}
}
class LeafEditor extends AbstractCellEditor implements TreeCellEditor,
ActionListener
{
JTextField textField;
public LeafEditor()
{
textField = new JTextField();
textField.addActionListener(this);
}
public Component getTreeCellEditorComponent(JTree tree, Object value,
boolean isSelected, boolean expanded, boolean leaf, int row)
{
DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
textField.setText(node.toString());
return textField;
}
public boolean isCellEditable(EventObject event)
{
// System.out.println("event = " + event);
// Get initial setting
boolean returnValue = super.isCellEditable(event);
if (event instanceof MouseEvent)
{
// If still possible, check if current tree node is a leaf
if (returnValue)
{
JTree tree = (JTree) event.getSource();
Object node = tree.getLastSelectedPathComponent();
if ((node != null) && (node instanceof TreeNode))
{
TreeNode treeNode = (TreeNode) node;
returnValue = treeNode.isLeaf();
}
}
}
return returnValue;
}
public Object getCellEditorValue()
{
return textField.getText();
}
/** Press enter key to save the edited value. */
public void actionPerformed(ActionEvent e)
{
super.stopCellEditing();
}
}
分享到:
相关推荐
当我们说"jtree节点可编辑",这意味着我们正在讨论如何允许用户修改JTree中的节点文本或者进行其他交互式操作。这通常是通过实现特定的监听器和自定义模型来实现的。下面将详细阐述这一主题。 首先,JTree组件默认...
### 如何使用JTree:详解与实践 #### JTree简介 `JTree`是Java Swing中的一个组件,用于展示层次化的数据结构。它允许用户在应用程序中构建树形视图来表示目录结构、组织结构图等。`JTree`继承自`JComponent`类,...
在Java的Swing库中,`JTree`组件是一个用于展示层次数据的控件,它以树状结构显示数据。`jtree`标题所指的可能是关于如何在`JTree`中添加复选框(checkboxes)的功能。这通常是为了让用户能够多选树中的节点,进行...
实现jTable和jTree的双向联动,点击jTree会选中jTable单元格,点击jTable会选中jTree节点。
- **可扩展性**:`JTree` 可以通过扩展 `TreeModel` 类来自定义数据结构。你可以创建自己的节点类来存储复杂的数据类型。 - **可定制性**:可以设置自定义的图标来表示展开/折叠状态,还可以为特定的节点提供不同的...
这个例子展示了如何实现一个可拖动节点的`JTree`,这在用户界面设计中是一个常见且实用的功能,特别是在需要展示层次结构信息时。`JTree`允许用户通过拖放操作来重新排列节点,提高交互性和用户体验。 拖放(Drag ...
总之,JTree和JTable是Java GUI编程中不可或缺的工具,熟练掌握它们的使用能够极大地提升开发效率,提供用户友好的数据展示界面。通过实践和研究提供的实例代码,开发者可以深入理解这两个组件的工作原理,从而更好...
实现JTree还可以包含许多扩展功能,如拖放排序、搜索、节点编辑等,这些都需要额外的JavaScript逻辑和可能的库支持。 总的来说,实现一个JTree涉及前端开发的多个方面,包括HTML布局、CSS样式、JavaScript编程以及...
5. **定制行为**:`JTree`提供了很多方法来定制其行为,如`setEditable()`(设置是否允许编辑节点)、`setShowsRootHandles()`(显示或隐藏根节点的手柄)。 6. **遍历和访问节点**:可以使用`TreePath`和`...
而`JSplitPane`是一个布局管理器,用于将两个组件(如`JTree`和`JTable`)放置在一个可调整大小的分隔面板中,用户可以根据需要调整两个部分的大小。 在Eclipse环境中,这是一个Maven项目,这意味着它依赖于Maven...
JTree支持编辑节点的文本,需要启用`JTree`的编辑功能。这通常通过设置`TreeCellEditor`和`TreeCellRenderer`来实现。在日志管理系统中,可能需要编辑节点以更新日志条目。要实现编辑,可以调用`JTree`的`...
XML(可扩展标记语言)是一种用于存储和传输数据的格式,它的结构是基于树的,每个元素可以有子元素,这种层级关系与JTree展示数据的方式相吻合。JTree可以方便地将XML文档的节点映射为树的各个分支,使得开发者和...
### Java组件之JTree使用详解 #### 一、引言 `JTree`是Java Swing中的一个重要组件,用于展示层次化的数据结构。它提供了一种直观的方式来表示具有层级关系的数据,例如文件系统的目录结构或者组织架构等。本文将...
- **可扩展性**: `JTree`支持动态加载数据,即只在需要时加载节点,这样可以处理大量数据而不会占用过多内存。 - **多选模式**: 可以设置`JTree`为单选或多选模式,允许用户同时选择多个节点。 - **拖放功能**: `...
### JTree的用法详解 #### 一、引言 `JTree` 是 Java Swing 库中的一个重要组件,用于在图形用户界面 (GUI) 中显示层次结构数据。它非常适合用来展示具有分层关系的信息,例如文件系统目录结构、组织结构等。 ####...
JTree还可以设置各种属性,例如是否显示线条、是否允许编辑节点等: ```java jTree.setShowsRootHandles(true); // 显示展开/折叠图标 jTree.setEditable(true); // 允许编辑节点 ``` 为了响应用户的交互,比如...
**JTree 2.0:构建直观的目录树视图** `JTree`是Java Swing库中的一个组件,用于在用户界面中展示层次结构数据,通常表现为目录树的形式。在`JTree2.0`版本中,这个组件得到了进一步的改进和增强,提供更丰富的功能...
而JTree则是一个Java库,它提供了一个可交互的树视图组件,常用于展示层次结构的数据。将HTML转换为JTree的过程主要是为了在Java应用程序中以树状结构展示HTML文档的结构。 要实现这个转换,我们需要以下步骤: 1....
### JTree用法详解:Swing中的树状结构控件 在Java Swing中,`JTree`是一个非常重要的组件,用于展示层次结构的数据,如文件系统、组织结构图等。本文将详细介绍`JTree`的各种使用方法,包括如何创建、自定义外观、...
JTree用法及JTree使用经验总结(吐血推荐) 1、初始化 2、三个经常使用的取值函数 3、根据node得到path:4、根据Path展开到该节点 5、根据path设定该节点选定 6、选中节点的方法 7、滚动到可见位置 8、给JTree添加右键...