
import javaxswingJFrame;
import javaxswingJOptionPane;
import javaxswingJScrollPane;
import javaxswingJTree;
import javaxswingScrollPaneConstants;
import javaxswingUIManager;
import javaxswingUnsupportedLookAndFeelException;
import javaxswingeventTreeSelectionEvent;
import javaxswingeventTreeSelectionListener;
import javaxswingtreeDefaultMutableTreeNode;
import javaxswingtreeDefaultTreeModel;
/
@author 逝水
/
public class JTreeDemo extends JFrame implements TreeSelectionListener{
private static final long serialVersionUID = -6209666185329417356L;
//树组件
protected JTree jTree ;
public JTreeDemo(){
init();
}
//初始化
private void init() {
jTree = new JTree();
//树节点的相关数据
DefaultMutableTreeNode root = new DefaultMutableTreeNode("三国名将");
DefaultMutableTreeNode shu = new DefaultMutableTreeNode("蜀国");
DefaultMutableTreeNode wei = new DefaultMutableTreeNode("魏国");
DefaultMutableTreeNode wu = new DefaultMutableTreeNode("吴国");
shuadd(new DefaultMutableTreeNode("关羽"));
shuadd(new DefaultMutableTreeNode("张飞"));
shuadd(new DefaultMutableTreeNode("赵云"));
shuadd(new DefaultMutableTreeNode("马超"));
shuadd(new DefaultMutableTreeNode("黄忠"));
weiadd(new DefaultMutableTreeNode("张辽"));
weiadd(new DefaultMutableTreeNode("典韦"));
weiadd(new DefaultMutableTreeNode("夏侯惇"));
weiadd(new DefaultMutableTreeNode("许褚"));
weiadd(new DefaultMutableTreeNode("徐晃"));
wuadd(new DefaultMutableTreeNode("太史慈"));
wuadd(new DefaultMutableTreeNode("甘宁"));
wuadd(new DefaultMutableTreeNode("孙策"));
wuadd(new DefaultMutableTreeNode("周瑜"));
wuadd(new DefaultMutableTreeNode("陆逊"));
rootadd(shu);
rootadd(wei);
rootadd(wu);
//树的数据模型
DefaultTreeModel model = new DefaultTreeModel(root);
//设置数据模型
jTreesetModel(model);
// 展开所有树
for (int i = 0; i < jTreegetRowCount(); i++)
jTreeexpandRow(i);
//添加事件
jTreeaddTreeSelectionListener(this);
//滚动面板
JScrollPane jScrollPane = new JScrollPane(jTree,
ScrollPaneConstantsVERTICAL_SCROLLBAR_ALWAYS,
ScrollPaneConstantsHORIZONTAL_SCROLLBAR_NEVER);
//添加树到滚动面板
jScrollPanegetViewport()add(jTree);
//添加滚动面板到窗口中
thisgetContentPane()add(jScrollPane);
thissetTitle("JTree的事件例子");
thispack();
thissetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
}
public static void main(String[] args){
//Windows风格
//String lookAndFeel = "comsunjavaswingplafwindowsWindowsLookAndFeel";
//Windows Classic风格
//String lookAndFeel = "comsunjavaswingplafwindowsWindowsClassicLookAndFeel";
//系统当前风格
String lookAndFeel = UIManagergetSystemLookAndFeelClassName();
try {
UIManagersetLookAndFeel(lookAndFeel);
} catch (ClassNotFoundException e) {
eprintStackTrace();
} catch (InstantiationException e) {
eprintStackTrace();
} catch (IllegalAccessException e) {
eprintStackTrace();
} catch (UnsupportedLookAndFeelException e) {
eprintStackTrace();
}
JTreeDemo demo = new JTreeDemo();
demosetVisible(true);
}
@Override
public void valueChanged(TreeSelectionEvent e) {
//获取选择的节点
DefaultMutableTreeNode node = (DefaultMutableTreeNode) jTree
getLastSelectedPathComponent();
if(nodegetLevel() == 0){
//显示提示信息
JOptionPaneshowMessageDialog(null,
nodegetUserObject()+": 共"+nodegetChildCount()+"个国家");
}else if(nodegetLevel() == 1){
//显示提示信息
JOptionPaneshowMessageDialog(null,
nodegetUserObject()+": 共"+nodegetChildCount()+"名名将");
}else if(nodegetLevel() == 2){
//显示提示信息
JOptionPaneshowMessageDialog(null, nodegetParent()+"名将: "+
nodegetUserObject());
}
}
}
用递归实现的,不过这样很容易堆栈溢出,
还是选择那个节点,加载那个节点下的内容,好一些。
-----------------------------------------------------------
import javaawtBorderLayout;
import javaioFile;
import javaxswingJFrame;
import javaxswingJScrollPane;
import javaxswingJTree;
import javaxswingtreeDefaultMutableTreeNode;
public class JTreeRoot extends JFrame {
private DefaultMutableTreeNode node = null;
public JTreeRoot() {
JScrollPane scrollPane = new JScrollPane();
getContentPane()add(scrollPane, BorderLayoutCENTER);
node = new DefaultMutableTreeNode("Root");
JTree tree = new JTree(node);
scrollPanesetViewportView(tree);
loadingTree(node);
setSize(650, 500);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
private void loadingTree(DefaultMutableTreeNode root) {
File[] roots = FilelistRoots();
DefaultMutableTreeNode node = null;
for (int i = 0; i < rootslength; i++) {
node = new DefaultMutableTreeNode(roots[i]getPath());
rootadd(node);
loadingTree(roots[i], node);
}
}
private void loadingTree(File root, DefaultMutableTreeNode node) {
File[] files = rootlistFiles();
DefaultMutableTreeNode subNode = null;
if (files == null) {
return;
}
for (int i = 0; i < fileslength; i++) {
Systemoutprintln(files[i]getPath());
subNode = new DefaultMutableTreeNode(files[i]getName());
nodeadd(subNode);
if (files[i]isDirectory()) {
loadingTree(files[i], subNode);
}
}
}
public static void main(String[] args) {
new JTreeRoot();
}
}
以上就是关于Swing程序题:用JTree创建一个节点树,当鼠标点节点时会d出一个框来显示当前子节点的信息。全部的内容,包括:Swing程序题:用JTree创建一个节点树,当鼠标点节点时会d出一个框来显示当前子节点的信息。、用JTree编写的文件目录树、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)