`
djlijian
  • 浏览: 29245 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Swing——test JTree

阅读更多
Lean about Swing for JTree,A simple sample that you can add sibling,add child and delete a node...

1:TreeEditFrame.java
@SuppressWarnings("serial")
public class TreeEditFrame extends JFrame {

private JTree tree;
private DefaultTreeModel model;

private static final int DEFAULT_WIDTH = 400;
private static final int DEFAULT_HEIGHT = 200;

public TreeEditFrame(){

setTitle("TreeEditFrameTest");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

TreeNode root = makeSampleTree();
model = new DefaultTreeModel(root);
tree = new JTree(model);
tree.setEditable(true);

JScrollPane scrollPane = new JScrollPane(tree);
add(scrollPane,BorderLayout.CENTER);

makeButtons();
}

public TreeNode makeSampleTree(){

DefaultMutableTreeNode root = new DefaultMutableTreeNode("World");
//定义一个国家
DefaultMutableTreeNode country = new DefaultMutableTreeNode("USA");
root.add(country);
DefaultMutableTreeNode state = new DefaultMutableTreeNode("California");
country.add(state);
DefaultMutableTreeNode city = new DefaultMutableTreeNode("San Jose");
state.add(city);
state = new DefaultMutableTreeNode("Michigan");
country.add(state);
city = new DefaultMutableTreeNode("Ann Arbor");
state.add(city);
//在定义一个国家
country = new DefaultMutableTreeNode("中国");
root.add(country);
DefaultMutableTreeNode province = new DefaultMutableTreeNode("安徽省");
country.add(province);
DefaultMutableTreeNode city2 = new DefaultMutableTreeNode("合肥市");
province.add(city2);
DefaultMutableTreeNode county = new DefaultMutableTreeNode("XX县");
city2.add(county);
return root;
}
//创建几个按钮
public void makeButtons(){

JPanel panel = new JPanel();
//添加按钮并处理添加兄弟节点事件
JButton addSiblingButton = new JButton("Add Sibling");
addSiblingButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {

DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
if(selectedNode == null){
return;
}
DefaultMutableTreeNode parent = (DefaultMutableTreeNode)selectedNode.getParent();
if(parent == null){
return;
}
DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("New");
int selectedIndex = parent.getIndex(selectedNode);
model.insertNodeInto(newNode, parent, selectedIndex + 1);
//显示新的节点
TreeNode[] nodes = model.getPathToRoot(newNode);
TreePath path = new TreePath(nodes);
tree.scrollPathToVisible(path);
}
});
panel.add(addSiblingButton);
//添加子节点和处理事件
JButton addChildButton = new JButton("Add Child");
addChildButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {

DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
if(selectedNode == null){
return;
}
DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("New");
model.insertNodeInto(newNode, selectedNode, selectedNode.getChildCount());
//显示新节点
TreeNode[] nodes = model.getPathToRoot(newNode);
TreePath path = new TreePath(nodes);
tree.scrollPathToVisible(path);
}
});
panel.add(addChildButton);
//删除子节点和处理事件
JButton deleteButton = new JButton("Delete");
deleteButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {

DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
if(selectedNode != null && selectedNode.getParent() != null){
model.removeNodeFromParent(selectedNode);
}
}
});
panel.add(deleteButton);

add(panel,BorderLayout.SOUTH);
}
}
2:TreeEditTest.java
public static void main(String[] args) {

JFrame frame = new TreeEditFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}

  • 大小: 16.2 KB
分享到:
评论

相关推荐

    JavaSwing中的JTree模型.pdf

    JavaSwing 中的 JTree 模型 JavaSwing 中的 JTree 模型是一种树形结构的展示方式,使用人们所熟悉的文件夹和树叶图来显示分层的数据。树由节点组成,节点可以是文件夹,也可以是树叶。文件夹可以有子节点,除根节点...

    java swing-jtree的用法

    Java Swing中的JTree组件是用来展示层次结构数据的可视化控件,它通常用于文件系统或组织结构的表示。JTree的核心是TreeNode接口,每个节点都对应一个TreeNode对象。TreeNode定义了一系列方法,如`getChildCount()`...

    java Swing JTree的教程实例

    在Java Swing中,JTree是一个非常重要的组件,用于展示层次结构的数据,通常以树状的形式显示。它在各种用户界面中都有广泛的应用,例如文件系统浏览、组织结构展示等。本教程将深入讲解如何使用JTree以及相关的操作...

    Swing-JTree.rar_jtree_jtree Demo_swing 树

    Swing中的JTree组件是Java GUI(图形用户界面)开发中的一个重要组成部分,它允许程序员创建和展示层次结构数据。在Java Swing库中,JTree是一个用于显示和操作树形数据结构的视图组件。这个“Swing-JTree.rar”文件...

    JAVA中的Swing的JTree操作的宝典

    在Java的Swing库中,JTree是一个非常重要的组件,用于展示层次结构的数据。它以树状的形式显示信息,使得用户能够浏览和交互这些数据。本篇“JAVA中的Swing的JTree操作的宝典”将深入探讨如何进行树节点的增加、删除...

    高级Swing组件JTree应用

    1. 掌握JTree应用,树节点的操作; 2. 使用JTree展数,管理对象。

    swing界面设计之JTree

    **Test.java源代码**:示例代码展示了如何在JTree上添加右键菜单,并实现编辑、添加、删除等功能。 #### (六) 功能齐全的JTree例子 **TreeEditTest.java源代码**:示例代码展示了如何使用JTree进行复杂的树结构...

    JTree用法大全 swing java

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

    jtree的详细使用说明

    `JTree` 是 Java Swing 中用于显示树状结构的数据组件。它继承自 `JComponent` 类,并且实现了 `Scrollable` 接口,这使得 `JTree` 能够在滚动面板 (`JScrollPane`) 中使用。 #### 二、构造方法 `JTree` 提供了...

    所支持拖拽功能的Swing-JTree代码

    博文链接:https://xiancoder.iteye.com/blog/75830

    JFC SWING—JAVA 基础类组件集

    Swing 提供了大量组件,如按钮 (JButton),文本框 (JTextField),滚动面板 (JScrollPane),列表视图 (JList),表格 (JTable),树形视图 (JTree),以及对话框 (JOptionPane) 等。这些组件都继承自 javax.swing....

    swing jtree

    Swing中的JTree组件是Java GUI(图形用户界面)设计中的一个重要组成部分,它允许用户以树状结构展示数据。在Java Swing库中,JTree是一个用于显示和操作数据的可视控件,通常用来呈现层次化的信息,如文件系统目录...

    JTree设置不同图标

    JFrame frame = new JFrame("JTree Test"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); IconNode root = new IconNode("Root"); IconNode node1 = new IconNode(new ImageIcon("image1.ico"), ...

    Swing展示的文件系统树

    在Java的Swing库中,`JTree`组件是一个强大的工具,用于展示层次结构的数据,如文件系统目录结构。这个组件允许用户以图形化的方式浏览和操作这些数据,包括展开、折叠节点,以及选择和编辑特定节点。在"Swing展示的...

    Java swing+Jtree+Hibernate+Oracle企业人事管理系统

    JTree是Java Swing中的一个组件,用于展示层次结构的数据,通常用于文件系统或树状数据模型的可视化表示。它允许用户浏览、选择和操作树形结构中的节点。JTree可以动态加载数据,支持节点的展开、折叠、选择和拖放...

Global site tag (gtag.js) - Google Analytics