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”函数。你只需要存储节点名称和节点是否被选中的对象。好的,我理解。我将探索此解决方案,谢谢!