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中加checkbox,实用哦。
实现jTable和jTree的双向联动,点击jTree会选中jTable单元格,点击jTable会选中jTree节点。
JTree的用法
JTree的例子,可以拖动节点 JTree的例子,可以拖动节点
HTML转成Jtree
java组件之jtree使用 10-1:使用JTree组件: 10-2:以Hashtable构造JTree: 10-3:以TreeNode构造JTree: . . . . 10-8:JTree的其他操作:
JAVA JTREE实例代码、JAVA JTABLE实例代码
JTree用法及JTree使用经验总结(吐血推荐) 1、初始化 2、三个经常使用的取值函数 3、根据node得到path:4、根据Path展开到该节点 5、根据path设定该节点选定 6、选中节点的方法 7、滚动到可见位置 8、给JTree添加右键...
JTree组件资料
java JTree+JTable使用样例,实现将JTree的节点内容显示到JTable中,eclipse导入maven项目 maven编译: mvn clean package
jtree , 经典教程,jtree 例子 ,很适合初学者,和急需使用的读者,一看就会
在java中,树对象提供了用树型结构分层显示数据的视图。可以扩展和收缩视图中的单个子树。树由Swing中的JTree类实现,JTree是Jcomponent的子类。文档就介绍了JTree的使用
JTree的Doc文档:jenkov-prizetags-doc-3.4.0.zip,在使用JTree.jar的同时,可以提供参考,便于大家查阅,欢迎下载
Jtree的使用例子 这是类似qq的节点例子 帮助我们是简单地编码
java使用jtree动态实现二叉树,包含二叉树的插入删除很查找
1. 掌握JTree应用,树节点的操作; 2. 使用JTree展数,管理对象。
JTree设置QQ好友树形列表中不同好友的图像,采用swing组件
JTree用法大全,各种使用方法demo,介绍,并附注释。