文档章节

可编辑的JTree

ruyees
 ruyees
发布于 2014/10/05 11:47
字数 312
阅读 19
收藏 0
点赞 0
评论 0
package PreD;

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;

public class TreeEditFrame extends JFrame implements ActionListener {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public static void main(String[] args) {
		JFrame frame = new TreeEditFrame();
		frame.setVisible(true);
	}

	public TreeEditFrame() {
		setTitle("TreeEditTest");
		setSize(300, 200);
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});

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

		// add scroll pane with tree to content pane
		Container contentPane = getContentPane();
		JScrollPane scrollPane = new JScrollPane(tree);
		contentPane.add(scrollPane, "Center");

		// make button panel
		JPanel panel = new JPanel();
		addSiblingButton = new JButton("Add Sibling");
		addSiblingButton.addActionListener(this);
		panel.add(addSiblingButton);
		addChildButton = new JButton("Add Child");
		addChildButton.addActionListener(this);
		panel.add(addChildButton);
		deleteButton = new JButton("Delete");
		deleteButton.addActionListener(this);
		panel.add(deleteButton);
		contentPane.add(panel, "South");
	}

	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);
		city = new DefaultMutableTreeNode("Cupertino");
		state.add(city);
		state = new DefaultMutableTreeNode("Michigan");
		country.add(state);
		city = new DefaultMutableTreeNode("Ann Arbor");
		state.add(city);
		country = new DefaultMutableTreeNode("Germany");
		root.add(country);
		state = new DefaultMutableTreeNode("Schleswig-Holstein");
		country.add(state);
		city = new DefaultMutableTreeNode("Kiel");
		state.add(city);
		return root;
	}

	public void actionPerformed(ActionEvent event) {
		DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree
				.getLastSelectedPathComponent();
		if (selectedNode == null) {
			return;
		}
		if (event.getSource().equals(deleteButton)) {
			if (selectedNode.getParent() != null) {
				model.removeNodeFromParent(selectedNode);
			}
			return;
		}
		// add new node as sibling or child
		DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("New");

		if (event.getSource().equals(addSiblingButton)) {
			DefaultMutableTreeNode parent = (DefaultMutableTreeNode) selectedNode
					.getParent();
			if (parent != null) {
				int selectedIndex = parent.getIndex(selectedNode);
				model.insertNodeInto(newNode, parent, selectedIndex + 1);
			}
		} else if (event.getSource().equals(addChildButton)) {
			model.insertNodeInto(newNode, selectedNode,
					selectedNode.getChildCount());
		}
		// now display new node
		TreeNode[] nodes = model.getPathToRoot(newNode);
		TreePath path = new TreePath(nodes);
		tree.scrollPathToVisible(path);
	}

	private DefaultTreeModel model;
	private JTree tree;
	private JButton addSiblingButton;
	private JButton addChildButton;
	private JButton deleteButton;
}
 

本文转载自:http://zuoqiang.iteye.com/blog/1336802

共有 人打赏支持
ruyees
粉丝 3
博文 71
码字总数 0
作品 0
深圳
产品经理
开发可编辑的JTree,求指导。。。。

因为项目的要求,需要用java开发一个能够像JTree那样下拉式的树形结构,但是可以批量的删除,树形结构的节点。看到java.swing.Jtree有这样的结构,但是不符合要求,有没有大神给指导一下,应...

竹林草 ⋅ 2013/10/03 ⋅ 1

JavaSwing_4.9: JTree(树)

本文链接: http://blog.csdn.net/xietansheng/article/details/78079812 Java Swing 图形界面开发(目录) 1. 概述 官方JavaDocsApi: javax.swing.JTree ,树。将分层数据显示为树状轮廓的组...

xietansheng ⋅ 2017/09/24 ⋅ 0

用JTree子节点触发添加一个JTabbedPane选项卡

用AWT/Swing写了一个签到系统,遇到一个问题百思不得其解啊- - 编写的服务端界面分为三块,左上为一个JTree的面板,左下是一个JTable的面板,右边是一个JEditorPane用来显示客户端和服务端操...

Loblood ⋅ 2011/09/19 ⋅ 1

JTree 平行化显示

很早之前就遇到这个问题了一直没能实质上的解决。请各位大神帮个忙。 我想用JTree达到想QQ好友列表一样的效果也就是 Root 我的好友 1…… 2…… 朋友 1…… 2…… 黑名单 1…… 2…… 但JTr...

dh_ ⋅ 2013/07/14 ⋅ 2

想请教下java中JTree的用法

想问下java中的JTree如何实现单击不用叶节点时得到不同文本域的内容???

孤火 ⋅ 2015/04/19 ⋅ 1

JTree设置,图标,背景色

JTree设置,图标,背景色,主程序 package bennkyou.gui.jtree; import java.awt.BorderLayout;import java.awt.Color;import java.awt.Component; import javax.swing.Icon;import javax.swing......

蒋中正 ⋅ 2012/04/02 ⋅ 2

jTree

I have seen some implementations of sortables list and none really fits my needs. Here is an ultra lightweight jQuery plugin (2.6kb minified!!!!!!!!!) that will do the job right......

匿名 ⋅ 2008/09/19 ⋅ 0

在开发过程中调试报表插件详细教程

背景说明 目前插件开发调试非常麻烦,需要修改代码,编译出class,重新打插件包。然后删除以前的,安装最新的。过程繁杂,而且不能调试,十分不方便。那么我就来教会大家如何可以调试插件。 ...

九月你好123 ⋅ 2015/07/29 ⋅ 0

java 实现json字符串的格式化 大神求指教

@SandKing 大神你好,想跟你请教个问题:今天在网上看到你写的json格式网页版,然后我也正在用java图形界面编写一个jsonview的小工具,现在遇到了问题,请问怎么实现输入一段json字符串,返回...

helloWt ⋅ 2014/11/28 ⋅ 3

swing之JTable合并单元格

今天下载了关于java swing的一个开源项目包tame,不过由于完成年代久远(98年),很多类在新的jdk1.4或jdk1.5上已经会报错。例如AttributiveCellTableModel类的setDataVector方法便需要改为:...

ensoncto ⋅ 2014/04/01 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

Dockerfile基础命令总结

FROM 指定使用的基础base image FROM scratch # 制作base image ,不使用任何基础imageFROM centos # 使用base imageFROM ubuntu:14.04 尽量使用官方的base image,为了安全 LABEL 描述作...

ExtreU ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部