Swing程序题:用JTree创建一个节点树,当鼠标点节点时会d出一个框来显示当前子节点的信息。

Swing程序题:用JTree创建一个节点树,当鼠标点节点时会d出一个框来显示当前子节点的信息。,第1张

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编写的文件目录树、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9672558.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存