swing tree 树形条的实现

本文介绍了一个使用Java Swing创建树形菜单的示例代码。该示例展示了如何构建一个多级目录结构,并实现了选择监听器,以显示当前选中的节点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.*;
import java.awt.*;
import java.awt.event.*;


public class Tree extends JFrame implements TreeSelectionListener {
private JLabel label;
public Tree()
{
super("树形菜单");setSize(400,400);
Container container=getContentPane();

DefaultMutableTreeNode rooTreeNode=new DefaultMutableTreeNode("文本编辑器");
DefaultMutableTreeNode node1=new DefaultMutableTreeNode("文件");
DefaultMutableTreeNode node2=new DefaultMutableTreeNode("编辑");

DefaultTreeModel treeModel=new DefaultTreeModel(rooTreeNode);
treeModel.insertNodeInto(node1, rooTreeNode, rooTreeNode.getChildCount());
treeModel.insertNodeInto(node2, rooTreeNode, rooTreeNode.getChildCount());

DefaultMutableTreeNode leafnode=new DefaultMutableTreeNode("打开");
treeModel.insertNodeInto(leafnode, node1, node1.getChildCount());
leafnode=new DefaultMutableTreeNode("保存");
treeModel.insertNodeInto(leafnode, node1, node1.getChildCount());
leafnode=new DefaultMutableTreeNode("另存为");
treeModel.insertNodeInto(leafnode, node1, node1.getChildCount());
leafnode=new DefaultMutableTreeNode("关闭");
treeModel.insertNodeInto(leafnode, node1, node1.getChildCount());

leafnode=new DefaultMutableTreeNode("剪切");
treeModel.insertNodeInto(leafnode, node2, node2.getChildCount());
leafnode=new DefaultMutableTreeNode("复制");
treeModel.insertNodeInto(leafnode, node2, node2.getChildCount());
leafnode=new DefaultMutableTreeNode("粘贴");
treeModel.insertNodeInto(leafnode, node2, node2.getChildCount());

JTree tree=new JTree(treeModel);
// tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SIN)
tree.addTreeSelectionListener(this);
tree.setRowHeight(20);

/* DefaultTreeCellRenderer cellRenderer=(DefaultTreeCellRenderer)tree.getCellRenderer();
cellRenderer.setFont(new Font("Serif",Font.PLAIN,14));
cellRenderer.setBackgroundSelectionColor(Color.white);
cellRenderer.setBackgroundNonSelectionColor(Color.yellow);
cellRenderer.setBorderSelectionColor(Color.blue);*/
container.add(new JScrollPane(tree));

label=new JLabel("你当前所选的节点为:",JLabel.CENTER);
label.setFont(new Font("Serif",Font.PLAIN,14));
container.add(label,BorderLayout.SOUTH);

setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void valueChanged(TreeSelectionEvent arg0)
{
// TODO Auto-generated method stub
JTree tree=(JTree)arg0.getSource();
DefaultMutableTreeNode selectionNode=(DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
String nodename=selectionNode.toString();
label.setText("您当权选取的节点为:"+nodename);
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Tree d=new Tree();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值