JTree使用
package JTree; import java.awt.Component;
import javax.swing.Icon;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer; public class IconNodeRenderer extends DefaultTreeCellRenderer { //继承该类
//重写该方法
public Component getTreeCellRendererComponent(JTree tree, Object value,boolean sel,
boolean expanded, boolean leaf, int row,boolean hasFocus){
super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf,row, hasFocus); //调用父类的该方法
Icon icon = ((IconNode) value).getIcon();//从节点读取图片
String txt=((IconNode) value).getText(); //从节点读取文本
setIcon(icon);//设置图片
setText(txt);//设置文本
return this;
}
} class IconNode extends DefaultMutableTreeNode {
protected Icon icon;
protected String txt; //只包含文本的节点构造
public IconNode(String txt)
{
super();
this.txt=txt;
} //包含文本和图片的节点构造
public IconNode(Icon icon,String txt)
{
super();
this.icon = icon;
this.txt = txt;
}
public void setIcon(Icon icon)
{
this.icon = icon;
} public Icon getIcon()
{
return icon;
} public void setText(String txt)
{
this.txt=txt;
} public String getText()
{
return txt;
}
}
package JTree; import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.TreePath; public class text
{
JFrame frame; public text()
{ frame=new JFrame("树");
frame.setSize(150,300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//java.net.URL imgURL=getClass().getResource("");
IconNode root1=new IconNode(new ImageIcon("images/3.jpg"),"高中同学");
IconNode root2=new IconNode(new ImageIcon("i"),"初中同学"); root1.add(new IconNode(new ImageIcon("5.png"),"雅君"));
root1.add(new IconNode(new ImageIcon("1.png"),"伟旭"));
root1.add(new IconNode(new ImageIcon("2.png"),"宜群"));
root2.add(new IconNode(new ImageIcon("2.png"),"彬强"));
root2.add(new IconNode(new ImageIcon("1.png"),"小强")); IconNode Root=new IconNode(null,null);//定义根节点
Root.add(root1);//定义二级节点
Root.add(root2);//定义二级节点 final JTree tree = new JTree(Root);//定义树
tree.setCellRenderer(new IconNodeRenderer()); //设置单元格描述
tree.setEditable(false); //设置树是否可编辑
tree.setRootVisible(false);//设置树的根节点是否可视
tree.setToggleClickCount(1);//设置单击几次展开数节点 DefaultTreeCellRenderer cellRenderer=(DefaultTreeCellRenderer)tree.getCellRenderer();//获取该树的Renderer
cellRenderer.setClosedIcon(new ImageIcon("2.gif"));//关闭打开图标
cellRenderer.setOpenIcon(new ImageIcon("2.gif"));//设置展开图标 //测试事件
tree.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
if(e.getClickCount()==2)//双击节点
{
TreePath path=tree.getSelectionPath();//获取选中节点路径
IconNode node=(IconNode)path.getLastPathComponent();//通过路径将指针指向该节点
if(node.isLeaf())//如果该节点是叶子节点
{
//DefaultTreeModel model=(DefaultTreeModel)tree.getModel();//获取该树的模型
//model.removeNodeFromParent(node);//从本树删除该节点
node.setIcon(new ImageIcon("3.png"));//修改该节点的图片
node.setText("双击");//修改该节点的文本
tree.repaint();//重绘更新树
System.out.println(node.getText());
}
else//不是叶子节点
{
} }
}
}); JScrollPane sp = new JScrollPane(tree);
frame.getContentPane().add(sp, BorderLayout.CENTER);
frame.setVisible(true);
} public static void main(String[] args)
{
new text();
}
}
JTree使用的更多相关文章
- JTree实现好友列表
最近学习了一下JTree的使用方法: 先来看一下树的实例: 构建一个树, DefaultMutableTreeNode root = new DefaultMutableTreeNode(" ...
- Java — JTree and JTable以及sqlServer的两种连接
使用JTree的步骤: 暂时只能创建一个头结点,创建一个树的结点作为头结点(其子结点也是相同的创建方法):DefaultMutableTreeNode headNode = new DefaultMu ...
- Java中JTree的简单案例
package ch12; import javax.swing.*; import javax.swing.tree.DefaultMutableTreeNode; /** * Created by ...
- Swing组件Jtree,JTablePane选项卡运用
今天开始写技术博客,说实话,本没有什么技术,说是总结也好,说是分享也罢,总之是想自己有意识的做一些事情,作为一名即将毕业的大学生,总是想以最好的状态,去面向社会,今天就是我准备好了的时候,本人将技术博 ...
- JTree用法及JTree使用经验总结
import java.awt.Dimension; import java.awt.Color; import javax.swing.JFrame; import javax.swing. ...
- Jtree(节点的渲染+资源管理器)(2)
上一次我们建立一个比较简单的资源管理器,这次我们说一下上面的资源管理器的问题,并且得尽量的贴近windows的资源管理器. 这样一个简单的资源管理树就完成了,下面我们说说它的问题: ① 图片和外观和W ...
- Jtree (节点的渲染+资源管理器)
我们的还是自定义的Jtree的类: package jtree.customNode; import java.io.File; import javax.swing.JTree; import ja ...
- jtree(选择框)
jtree一般的用法是: 1. 展示电脑中文件的层次结构,如图所示. 具体的代码: package jtree; import java.io.File; import javax.swing.JTr ...
- JAVA GUI学习 - JTree树结构组件学习 ***
public class JTreeKnow extends JFrame { public JTreeKnow() { this.setBounds(300, 100, 400, 500); thi ...
随机推荐
- shared_ptr和多线程
前一篇文章写得实在太挫,重新来一篇. 多线程环境下生命周期的管理 多线程环境下,跨线程对象的生命周期管理会有什么挑战?我们拿生产者消费者模型来讨论这个问题. 实现一个简单的用于生产者消费者模型的队列 ...
- strace命令使用
在调试的时候,strace能帮助你追踪到一个程序所执行的系统调用.当你想知道程序和操作系统如何交互的时候,这是极其方便的,比如你想知道执行了哪些系统调用,并且以何种顺序执行. 这个简单而又强大的工具几 ...
- Java 数组声明与初始化
引言 学习了好久的java,每次要写数组的声明和初始化代码,总是理不清.最近又碰到了一次这种情况.这次拿出<Thinking In Java>好好总结一翻. 数组声明 对于数组的声明其实都 ...
- 第七章 LED将为我闪烁:控制发光二极管
该Linux驱动用来控制开发板上的4个LED灯,即通过向Linux驱动发送数据可以控制LED灯的开关.LED驱动提供两种交互方式:命令和读写设备文件. 测试LED驱动之前需用USB线连接开发板,然后打 ...
- FFMpeg的码率控制
mediaxyz是一位研究ffmpeg有三年的高人了,这几天一直在折腾ffmpeg中的x264,就是不知道该如何控制码率,主要是参数太多,也不知道该如何设置,在google上search了一下,这方面 ...
- 如何判断pc或者移动端
<script type="text/javascript"> var userAgentInfo = navigator.userAgent; var Agents ...
- prompt弹框返回输入的文本
演示网址链接http://www.w3school.com.cn/jsref/met_win_prompt.asp <html> <head> <script type= ...
- Session Tracking Approaches
cookies url rewriting hidden field see also: http://www.informit.com/articles/article.aspx?p=29817&a ...
- oracle 将多字段数据合成一个
1.系统默认 WMSYS.WM_CONCAT(A.ID), 2.再进行替换 REPLACE(WMSYS.WM_CONCAT(A.ID),',','|'), (张)
- GCD: 基本概念和Dispatch Queue 【转】
什么是GCD? Grand Central Dispatch或者GCD,是一套低层API,提供了一种新的方法来进行并发程序编写.从基本功能上讲,GCD有点像 NSOperationQueue,他们都允 ...