自分のJTreeをロードして、自分のディレクトリ構造を自分のコードと出力イメージに表示しました。 ツリーノードは、デフォルトでアルファベット順にソートされていますが、実際にはディレクトリの名前を変更せずに、すべてのノードをディレクトリ名の第2の名前に従って並べ替える必要があります。 JTreeノードをソートする必要がある名前に下線を引いています。私に何かを提案してください。あなたはコンパレータを使用しては、Arrays.sort()メソッドを使用し、そのように、独自のルールにより、エントリを比較し、あなた自身のコンパレータを書くことができJTreeノードをアルファベット順に並べ替え
import java.io.File;
import javax.swing.JFrame;
import javax.swing.JTree;
import javax.swing.event.TreeModelListener;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
public class FILE_NAME {
public static void main(String[] args) {
JFrame frame = new JFrame("My Jtree");
File root = new File("C:/java");
JTree tree = new JTree(new FileTreeModel(root));
frame.setSize(300, 300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(tree);
frame.setVisible(true);
}
}
class FileTreeModel implements TreeModel {
protected File root;
public FileTreeModel(File root) {
this.root = root;
}
@Override
public Object getRoot() {
return root;
}
@Override
public boolean isLeaf(Object node) {
return ((File) node).isFile();
}
@Override
public int getChildCount(Object parent) {
String[] children = ((File) parent).list();
if (children == null) {
return 0;
}
return children.length;
}
@Override
public Object getChild(Object parent, int index) {
String[] children = ((File) parent).list();
if ((children == null) || (index == children.length)) {
return null;
}
return new File((File) parent, children[index]);
}
@Override
public int getIndexOfChild(Object parent, Object child) {
String[] children = ((File) parent).list();
String childname = ((File) child).getName();
if (children == null) {
return -1;
}
for (int i = 0; i == children.length; i++) {
if (childname.equals(children[i])) {
return i;
}
}
return -1;
}
@Override
public void valueForPathChanged(TreePath path, Object newvalue) {
}
@Override
public void addTreeModelListener(TreeModelListener l) {
}
@Override
public void removeTreeModelListener(TreeModelListener l) {
}
}
OUTPUT
* "私に何かを提案してください" * 1)あなたがしようとしているものを説明してください。 2)質問をする。 –
よく私はまだ試してみます – Jony
動的ソートが必要ない場合は、TreeModelを構築するときにTreeModelをソートするのが最も簡単な方法です – Robin