Netbeans 的 JTree 的节点操作问题相关

 

第一个问题:

是如何 在 Netbeans 中修改已经生成的 JTree。

我主要是想修改 节点。

我是用 可视化组建拖进去的。

所以创建树的时候没有写代码。

修改树的时候我是找出根节点,然后添加新节点。

当用System.out输出的时候显示我已经将新节点插入了,

但是显示面板上总是没有更新。

 

2009-11-13修改:

问题的描述:按下begin键则添加一个“新节点”到根节点之下

问题的解决方法:

private void beginActionPerformed(java.awt.event.ActionEvent evt){                                      
       
//获得根节点的引用
        DefaultMutableTreeNode root = (DefaultMutableTreeNode) PCTree.getModel().getRoot();
       
//将“新节点”添加到根节点之下
        root.add(new DefaultMutableTreeNode("新节点"));
       
//重新显示这棵树
        this.PCTree.updateUI();
}   

●●●解释: beginActionPerformed 是“begin”这个按键的键盘响应事件

PCTree 是我的面板中的树。

.

.

第二个问题:

在选中的节点上添加“新节点”

private void addNewNodeActionPerformed(ActionEvent evt) {
       
//获得当前选中的节点,理论上应该判断一下root是不是为空,方便起见所以不判断了
        DefaultMutableTreeNode root = (DefaultMutableTreeNode)PCTree.getLastSelectedPathComponent();
       
//将“新节点”添加到当前选中的节点之下
        root.add(new DefaultMutableTreeNode("节点"));
       
//重新显示这棵树
        this.PCTree.updateUI();
    }

 

.

.

第三个问题:

删除选中的节点

private void delPresentNodeActionPerformed(ActionEvent evt){

//找出当前选中的节点

DefaultMutableTreeNode presentNode= (DefaultMutableTreeNode) PCTree.getSelectionPath().getLastPathComponent();

//删除当前选中的节点

presentNode.removeFromParent();

//重新显示这棵树

this.PCTree.updateUI();

}

.

.

.

一个能够让“不同的叶子节点” 显示 “不同图标” 的程序示例

import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import javax.swing.tree.TreeModel;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import java.awt.*;

public class TreeImage extends JFrame {
DefaultTreeModel model;
JTree tree;      

          public TreeImage() {
super("");
setSize(300, 200);
model = createModel();
tree = new JTree(model);
tree.setCellRenderer(new MyTree());
JScrollPane jsp = new JScrollPane(tree);
getContentPane().add(jsp, BorderLayout.CENTER);
setVisible(true);
}

public DefaultTreeModel createModel() {
DefaultMutableTreeNode root = new DefaultMutableTreeNode("a");
DefaultMutableTreeNode b = new DefaultMutableTreeNode("b");
DefaultMutableTreeNode c = new DefaultMutableTreeNode("c");
root.add(b);
root.add(c);
return new DefaultTreeModel(root);
}

public static void main(String args[]) {
TreeImage ti = new TreeImage();
}
}

class MyTree extends DefaultTreeCellRenderer {
Border border = new EmptyBorder(1, 1, 1, 1);

public MyTree() {
setOpaque(true);
setBorder(border);
}

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);

setText(value.toString());
if (sel)
setForeground(getTextSelectionColor());
else
setForeground(getTextNonSelectionColor());
DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
String str = value.toString();
if (str == "a") {
this.setIcon(new ImageIcon("Add.gif"));
}
if (str == "b") {
this.setIcon(new ImageIcon("Copy.gif"));
}
if (str == "c") {
this.setIcon(new ImageIcon("Delete.gif"));
}
return this;
}
}   

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值