首页javajtreeJava Swing - 如何停止孩子在JTree中显示相对路径

Java Swing - 如何停止孩子在JTree中显示相对路径

我们想知道如何停止孩子在JTree中显示相对路径。
import java.awt.Color;
import java.awt.Component;
import java.io.File;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.border.LineBorder;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.TreeSelectionModel;

public class Main {
  public static void main(String[] args) {
    JFrame frame = new JFrame();
    JScrollPane scrollPane = new JScrollPane();
    scrollPane.setBounds(10, 11, 212, 500);
    frame.getContentPane().add(scrollPane);

    JTree tree = new JTree(addNodes(new File(".")));
    tree.setRootVisible(false);
    tree.setShowsRootHandles(true);

    tree.setBorder(new LineBorder(new Color(0, 0, 0)));
    tree.getSelectionModel().setSelectionMode(
        TreeSelectionModel.SINGLE_TREE_SELECTION);
    scrollPane.setViewportView(tree);

    tree.setCellRenderer(new FileTreeCellRenderer());

    frame.pack();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
  }

  public static DefaultMutableTreeNode addNodes(File dir) {
    DefaultMutableTreeNode node = new DefaultMutableTreeNode(dir);
    for (File file : dir.listFiles()) {
      if (file.isDirectory()) {
        node.add(addNodes(file));
      } else {
        node.add(new DefaultMutableTreeNode(file));
      }
    }
    return node;
  }

}

class FileTreeCellRenderer extends DefaultTreeCellRenderer {

  @Override
  public Component getTreeCellRendererComponent(JTree tree, Object value,
      boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
    if (value instanceof DefaultMutableTreeNode) {
      value = ((DefaultMutableTreeNode) value).getUserObject();
      if (value instanceof File) {
        value = ((File) value).getName();
      }
    }
    return super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf,
        row, hasFocus);
  }

}