Hallo Männers,
ich habe da ein Problem, wo ich einfach nicht weiter komme und ich es schon mit verschiedenen Methoden versucht habe.
Ich möchte eigentlich nur, einen TreePath selbst er stellen und ihn dann mit expandPath öffnen.
Es klappt aber nicht.
Ich hoffe sowas ist überhaubt möglich.
Hier ein Beispiel:
ich habe da ein Problem, wo ich einfach nicht weiter komme und ich es schon mit verschiedenen Methoden versucht habe.
Ich möchte eigentlich nur, einen TreePath selbst er stellen und ihn dann mit expandPath öffnen.
Es klappt aber nicht.
Ich hoffe sowas ist überhaubt möglich.
Hier ein Beispiel:
Java:
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.SwingUtilities;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
import javax.swing.JButton;
import java.awt.BorderLayout;
import javax.swing.JTextField;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class FileBrowser implements Runnable {
private DefaultMutableTreeNode root;
private DefaultTreeModel treeModel;
private JTree tree;
/**
* @wbp.parser.entryPoint
*/
@Override
public void run() {
JFrame frame = new JFrame("File Browser");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final File fileRoot = new File("C:/workspace/testJTree/daten");
root = new DefaultMutableTreeNode(new FileNode(fileRoot));
treeModel = new DefaultTreeModel(root);
JButton btnNewButton = new JButton("suche");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
List list = new ArrayList();
list.add(fileRoot);
list.add("a");
list.add("1");
System.out.println(new TreePath(list.toArray()));
tree.expandPath(new TreePath(list.toArray()));
}
});
frame.getContentPane().add(btnNewButton, BorderLayout.NORTH);
tree = new JTree(treeModel);
tree.setShowsRootHandles(true);
JScrollPane scrollPane = new JScrollPane(tree);
frame.getContentPane().add(scrollPane);
frame.setLocationByPlatform(true);
frame.setSize(640, 480);
frame.setVisible(true);
CreateChildNodes ccn =
new CreateChildNodes(fileRoot, root);
new Thread(ccn).start();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new FileBrowser());
}
public class CreateChildNodes implements Runnable {
private DefaultMutableTreeNode root;
private File fileRoot;
public CreateChildNodes(File fileRoot,
DefaultMutableTreeNode root) {
this.fileRoot = fileRoot;
this.root = root;
}
@Override
public void run() {
createChildren(fileRoot, root);
}
private void createChildren(File fileRoot,
DefaultMutableTreeNode node) {
File[] files = fileRoot.listFiles();
if (files == null) return;
for (File file : files) {
DefaultMutableTreeNode childNode =
new DefaultMutableTreeNode(new FileNode(file));
node.add(childNode);
if (file.isDirectory()) {
createChildren(file, childNode);
}
}
}
}
public class FileNode {
private File file;
public FileNode(File file) {
this.file = file;
}
@Override
public String toString() {
String name = file.getName();
if (name.equals("")) {
return file.getAbsolutePath();
} else {
return name;
}
}
}
}