问题描述:
    如上图,怎么样才能实现点击“改变”按钮后,就改变“广东”节点的图标呀?各位大侠请不吝赐教
--------------------------------------------------------------------------------------------------/*
 * 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();  
    }  

解决方案 »

  1.   

    d:\%E6%88%91%E7%9A%84%E6%96%87%E6%A1%A3\Snap2.bmp硬盘图片不支持。
      

  2.   

    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(....);
    }