Swing——test JTree

Lean about Swing for JTree,A simple sample that you can add sibling,add child and delete a node...

1:TreeEditFrame.java
@SuppressWarnings("serial")
public class TreeEditFrame extends JFrame {

private JTree tree;
private DefaultTreeModel model;

private static final int DEFAULT_WIDTH = 400;
private static final int DEFAULT_HEIGHT = 200;

public TreeEditFrame(){

setTitle("TreeEditFrameTest");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

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

JScrollPane scrollPane = new JScrollPane(tree);
add(scrollPane,BorderLayout.CENTER);

makeButtons();
}

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);
state = new DefaultMutableTreeNode("Michigan");
country.add(state);
city = new DefaultMutableTreeNode("Ann Arbor");
state.add(city);
//在定义一个国家
country = new DefaultMutableTreeNode("中国");
root.add(country);
DefaultMutableTreeNode province = new DefaultMutableTreeNode("安徽省");
country.add(province);
DefaultMutableTreeNode city2 = new DefaultMutableTreeNode("合肥市");
province.add(city2);
DefaultMutableTreeNode county = new DefaultMutableTreeNode("XX县");
city2.add(county);
return root;
}
//创建几个按钮
public void makeButtons(){

JPanel panel = new JPanel();
//添加按钮并处理添加兄弟节点事件
JButton addSiblingButton = new JButton("Add Sibling");
addSiblingButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {

DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
if(selectedNode == null){
return;
}
DefaultMutableTreeNode parent = (DefaultMutableTreeNode)selectedNode.getParent();
if(parent == null){
return;
}
DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("New");
int selectedIndex = parent.getIndex(selectedNode);
model.insertNodeInto(newNode, parent, selectedIndex + 1);
//显示新的节点
TreeNode[] nodes = model.getPathToRoot(newNode);
TreePath path = new TreePath(nodes);
tree.scrollPathToVisible(path);
}
});
panel.add(addSiblingButton);
//添加子节点和处理事件
JButton addChildButton = new JButton("Add Child");
addChildButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {

DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
if(selectedNode == null){
return;
}
DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("New");
model.insertNodeInto(newNode, selectedNode, selectedNode.getChildCount());
//显示新节点
TreeNode[] nodes = model.getPathToRoot(newNode);
TreePath path = new TreePath(nodes);
tree.scrollPathToVisible(path);
}
});
panel.add(addChildButton);
//删除子节点和处理事件
JButton deleteButton = new JButton("Delete");
deleteButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {

DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
if(selectedNode != null && selectedNode.getParent() != null){
model.removeNodeFromParent(selectedNode);
}
}
});
panel.add(deleteButton);

add(panel,BorderLayout.SOUTH);
}
}
2:TreeEditTest.java
public static void main(String[] args) {

JFrame frame = new TreeEditFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值