`
hizhangqi
  • 浏览: 89427 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JTree 失去焦点可编辑

 
阅读更多
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使用方法

    ### 如何使用JTree:详解与实践 #### JTree简介 `JTree`是Java Swing中的一个组件,用于展示层次化的数据结构。它允许用户在应用程序中构建树形视图来表示目录结构、组织结构图等。`JTree`继承自`JComponent`类,...

    jtree

    在Java的Swing库中,`JTree`组件是一个用于展示层次数据的控件,它以树状结构显示数据。`jtree`标题所指的可能是关于如何在`JTree`中添加复选框(checkboxes)的功能。这通常是为了让用户能够多选树中的节点,进行...

    jTree和jTable 双向联动

    实现jTable和jTree的双向联动,点击jTree会选中jTable单元格,点击jTable会选中jTree节点。

    JTree

    - **可扩展性**:`JTree` 可以通过扩展 `TreeModel` 类来自定义数据结构。你可以创建自己的节点类来存储复杂的数据类型。 - **可定制性**:可以设置自定义的图标来表示展开/折叠状态,还可以为特定的节点提供不同的...

    JTree的例子,可以拖动节点

    这个例子展示了如何实现一个可拖动节点的`JTree`,这在用户界面设计中是一个常见且实用的功能,特别是在需要展示层次结构信息时。`JTree`允许用户通过拖放操作来重新排列节点,提高交互性和用户体验。 拖放(Drag ...

    JAVA JTREE JTABLE实例代码

    总之,JTree和JTable是Java GUI编程中不可或缺的工具,熟练掌握它们的使用能够极大地提升开发效率,提供用户友好的数据展示界面。通过实践和研究提供的实例代码,开发者可以深入理解这两个组件的工作原理,从而更好...

    JTree的实现代码

    实现JTree还可以包含许多扩展功能,如拖放排序、搜索、节点编辑等,这些都需要额外的JavaScript逻辑和可能的库支持。 总的来说,实现一个JTree涉及前端开发的多个方面,包括HTML布局、CSS样式、JavaScript编程以及...

    JTree的Doc文档

    5. **定制行为**:`JTree`提供了很多方法来定制其行为,如`setEditable()`(设置是否允许编辑节点)、`setShowsRootHandles()`(显示或隐藏根节点的手柄)。 6. **遍历和访问节点**:可以使用`TreePath`和`...

    Java JTree+JTable应用

    而`JSplitPane`是一个布局管理器,用于将两个组件(如`JTree`和`JTable`)放置在一个可调整大小的分隔面板中,用户可以根据需要调整两个部分的大小。 在Eclipse环境中,这是一个Maven项目,这意味着它依赖于Maven...

    java Swing JTree的教程实例

    JTree支持编辑节点的文本,需要启用`JTree`的编辑功能。这通常通过设置`TreeCellEditor`和`TreeCellRenderer`来实现。在日志管理系统中,可能需要编辑节点以更新日志条目。要实现编辑,可以调用`JTree`的`...

    Jtree

    XML(可扩展标记语言)是一种用于存储和传输数据的格式,它的结构是基于树的,每个元素可以有子元素,这种层级关系与JTree展示数据的方式相吻合。JTree可以方便地将XML文档的节点映射为树的各个分支,使得开发者和...

    java组件之jtree使用

    ### Java组件之JTree使用详解 #### 一、引言 `JTree`是Java Swing中的一个重要组件,用于展示层次化的数据结构。它提供了一种直观的方式来表示具有层级关系的数据,例如文件系统的目录结构或者组织架构等。本文将...

    JTree组件资料

    - **可扩展性**: `JTree`支持动态加载数据,即只在需要时加载节点,这样可以处理大量数据而不会占用过多内存。 - **多选模式**: 可以设置`JTree`为单选或多选模式,允许用户同时选择多个节点。 - **拖放功能**: `...

    JTree的用法

    ### JTree的用法详解 #### 一、引言 `JTree` 是 Java Swing 库中的一个重要组件,用于在图形用户界面 (GUI) 中显示层次结构数据。它非常适合用来展示具有分层关系的信息,例如文件系统目录结构、组织结构等。 ####...

    (一)如何使用JTree

    JTree还可以设置各种属性,例如是否显示线条、是否允许编辑节点等: ```java jTree.setShowsRootHandles(true); // 显示展开/折叠图标 jTree.setEditable(true); // 允许编辑节点 ``` 为了响应用户的交互,比如...

    JTree2.0 目录树

    **JTree 2.0:构建直观的目录树视图** `JTree`是Java Swing库中的一个组件,用于在用户界面中展示层次结构数据,通常表现为目录树的形式。在`JTree2.0`版本中,这个组件得到了进一步的改进和增强,提供更丰富的功能...

    HTML转成Jtree

    而JTree则是一个Java库,它提供了一个可交互的树视图组件,常用于展示层次结构的数据。将HTML转换为JTree的过程主要是为了在Java应用程序中以树状结构展示HTML文档的结构。 要实现这个转换,我们需要以下步骤: 1....

    JTree用法大全 swing java

    ### JTree用法详解:Swing中的树状结构控件 在Java Swing中,`JTree`是一个非常重要的组件,用于展示层次结构的数据,如文件系统、组织结构图等。本文将详细介绍`JTree`的各种使用方法,包括如何创建、自定义外观、...

    JTree用法及JTree使用经验总结及源码

    JTree用法及JTree使用经验总结(吐血推荐) 1、初始化 2、三个经常使用的取值函数 3、根据node得到path:4、根据Path展开到该节点 5、根据path设定该节点选定 6、选中节点的方法 7、滚动到可见位置 8、给JTree添加右键...

Global site tag (gtag.js) - Google Analytics