Java JTree用复选框替换文件夹图标
我正在用这样一棵树做一个窗户: 我想用复选框替换文件夹和文件图标。这个问题已经有了答案,我在这个链接中找到了答案: 但我不知道我是否真的需要遵循这个答案,或者我是否可以做一些“更容易”的事情,只调整我的代码使其具有复选框。你能告诉我吗 当然,在我的程序中,我需要知道所有的复选框来进行一些操作 这是我的代码,是简单的修改,还是我必须遵循之前的教程Java JTree用复选框替换文件夹图标,java,swing,checkbox,tree,Java,Swing,Checkbox,Tree,我正在用这样一棵树做一个窗户: 我想用复选框替换文件夹和文件图标。这个问题已经有了答案,我在这个链接中找到了答案: 但我不知道我是否真的需要遵循这个答案,或者我是否可以做一些“更容易”的事情,只调整我的代码使其具有复选框。你能告诉我吗 当然,在我的程序中,我需要知道所有的复选框来进行一些操作 这是我的代码,是简单的修改,还是我必须遵循之前的教程 import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swi
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
public class Window extends JFrame {
private JTree tree;
public Window(){
this.setSize(300, 300);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("Tree");
//We build the tree
buildTree();
this.setVisible(true);
}
private void buildTree(){
//We create the root
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
//We add nodes and children to these nodes
for(int i = 1; i < 12; i++){
DefaultMutableTreeNode rep = new DefaultMutableTreeNode("Node number"+i);
//We add some nodes for odd numbers
if((i%2) == 0){
for(int j = 1; j < 5; j++){
DefaultMutableTreeNode rep2 = new DefaultMutableTreeNode("NodeChild" + j);
//We add children to the nodes
for(int k = 1; k < 5; k++)
rep2.add(new DefaultMutableTreeNode("NodeChild" + k));
rep.add(rep2);
}
}
//We add nodes and children to the root
root.add(rep);
}
//We create the tree
tree = new JTree(root);
this.getContentPane().add(new JScrollPane(tree));
}
public static void main(String[] args){
Window win = new Window();
}
}
import javax.swing.JFrame;
导入javax.swing.JScrollPane;
导入javax.swing.JTree;
导入javax.swing.tree.DefaultMutableTreeNode;
公共类窗口扩展了JFrame{
私有JTree树;
公共窗口(){
这个。设置大小(300300);
此.setLocationRelativeTo(空);
此.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
本文件的标题为“树”;
//我们建造这棵树
buildTree();
此.setVisible(true);
}
私有void buildTree(){
//我们创建根
DefaultMutableTreeNode根=新的DefaultMutableTreeNode(“根”);
//我们向这些节点添加节点和子节点
对于(int i=1;i<12;i++){
DefaultMutableTreeNode rep=新的DefaultMutableTreeNode(“节点号”+i);
//我们为奇数添加一些节点
如果((i%2)==0){
对于(int j=1;j<5;j++){
DefaultMutableTreeNode rep2=新的DefaultMutableTreeNode(“NodeChild”+j);
//我们向节点添加子节点
对于(int k=1;k<5;k++)
rep2.添加(新的DefaultMutableTreeNode(“NodeChild”+k));
rep.add(rep2);
}
}
//我们向根添加节点和子节点
root.add(rep);
}
//我们创建树
树=新的JTree(根);
this.getContentPane().add(新的JScrollPane(树));
}
公共静态void main(字符串[]args){
win窗口=新窗口();
}
}
可以使用编辑器和渲染器执行此操作。看这篇文章。关于的文章更好地描述了编辑器,但它们也与JTree一起工作。感谢您的帮助。我已经看过关于如何为JTree个性化图标的教程。但是使用复选框比使用绘图或图标要困难一些,因为它是一个特定的对象,因此我的代码有错误。我必须考虑“checked”函数。你只需要存储节点名称和节点是否被选中的对象。好的,我理解。我将探索此解决方案,谢谢!