关于JTree改变节点图标的问题

吴锦波 2011-10-18 12:23:22


问题描述:
如上图,怎么样才能实现点击“改变”按钮后,就改变“广东”节点的图标呀?各位大侠请不吝赐教
--------------------------------------------------------------------------------------------------

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package swing.demo;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
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;

/**
*
* @author Administrator
*/
public class TreeDemo
{
JFrame frame = new JFrame("简单树");
JPanel panel = new JPanel(new GridLayout(2,1));
JButton changeBtn = new JButton("关闭");

JTree tree;
//定义几个初始节点
DefaultMutableTreeNode root = new DefaultMutableTreeNode("终端控制器");
DefaultMutableTreeNode guangdong = new DefaultMutableTreeNode("深圳");
DefaultMutableTreeNode foshan = new DefaultMutableTreeNode("网元1");
DefaultMutableTreeNode shantou = new DefaultMutableTreeNode("网元2");

DefaultMutableTreeNode guangxi = new DefaultMutableTreeNode("上海");
DefaultMutableTreeNode guilin = new DefaultMutableTreeNode("网元3");
DefaultMutableTreeNode nanning = new DefaultMutableTreeNode("网元4");

public void init()
{
//通过add方法建立树节点之间的父子关系
guangdong.add(foshan);
guangdong.add(shantou);
guangxi.add(guilin);
guangxi.add(nanning);
root.add(guangdong);
root.add(guangxi);

changeBtn.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
System.out.println("关闭网络");
}
});
//以根节点创建树
tree = new JTree(root);

//默认连线
//tree.putClientProperty("JTree.lineStyle" , "Angeled");
//没有连线
tree.putClientProperty("JTree.lineStyle" , "None");
//水平分隔线
//tree.putClientProperty("JTree.lineStyle" , "Horizontal");


//设置是否显示根节点的“展开/折叠”图标,默认是false
tree.setShowsRootHandles(true);
//设置节点是否可见,默认是true
tree.setRootVisible(true);

panel.add(new JScrollPane(tree));
panel.add(changeBtn);
frame.add(panel);
frame.setSize(170, 270);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}

public static void main(String[] args)
{
new TreeDemo().init();
}
}
...全文
365 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
magic_kid_2010 2012-08-28
  • 打赏
  • 举报
回复
JTree tree = (JTree) e.getSource();
int selRow = tree.getRowForLocation(e.getX(), e.getY());
TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());
if(selRow != -1) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) selPath.getLastPathComponent();
node.setIcon(....);
}
albertshaw 2011-10-18
  • 打赏
  • 举报
回复
改变节点图标是什么意思,指要把广东树折叠起来么?
吴锦波 2011-10-18
  • 打赏
  • 举报
回复
不好意思,这个图片的路径是我本地的,所以你们打不开,直接粘贴不上去,没有办法。其实这个图片是代码跑出来的效果图,你们把代码跑一下就行了,抱歉^_^
huntor 2011-10-18
  • 打赏
  • 举报
回复
d:\%E6%88%91%E7%9A%84%E6%96%87%E6%A1%A3\Snap2.bmp

硬盘图片不支持。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧