Hallo
Ich habe folgenden Code im Netz gefunden:
Es funktioniert gut, jedoch wäre ich froh, wenn mir jemand sagen könnte, wo
ich den Code verändern muss, damit der JTree von Anfang an expandiert ist und der Divider nicht nach rechts springt, wenn man auf den Hauptknoten klickt.
Danke,
Roobiks
Ich habe folgenden Code im Netz gefunden:
Code:
import java.awt.Color;
import java.awt.Component;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
public class Testy2 {
public static void main(String[] args) {
final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JSplitPane splitPane = new JSplitPane();
final Testy2 tree = new Testy2();
tree.getTree().addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
splitPane.setRightComponent(tree.getSelectedComponent());
}
});
tree.add("Test 1", new Test());
tree.add("Test 2", new JLabel("Test 2"));
splitPane.setLeftComponent(tree.getTree());
splitPane.setRightComponent(null);
splitPane.setDividerLocation(200);
splitPane.setDividerSize(4);
splitPane.setOpaque(true);
splitPane.setBorder(BorderFactory.createLineBorder(Color.GRAY));
frame.getContentPane().add(splitPane);
frame.pack();
frame.setVisible(true);
}
private final JTree tree;
private final DefaultMutableTreeNode root;
public Testy2() {
super();
root = new DefaultMutableTreeNode("Josh Newmann Account");
tree = new JTree(root);
}
public void add(final String title, final Component c) {
root.add(new Node(c, title));
}
public Component getSelectedComponent() {
Object o = tree.getLastSelectedPathComponent();
if (o instanceof Node) {
return ((Node)o).getComponent();
} else{
return null;
}
}
public JTree getTree() {
return tree;
}
private class Node extends DefaultMutableTreeNode {
private final Component component;
private final String label;
private Node(final Component c, final String label) {
super(c);
this.component = c;
this.label = label;
}
private Component getComponent() {
return component;
}
public String toString() {
return label;
}
}
}
Es funktioniert gut, jedoch wäre ich froh, wenn mir jemand sagen könnte, wo
ich den Code verändern muss, damit der JTree von Anfang an expandiert ist und der Divider nicht nach rechts springt, wenn man auf den Hauptknoten klickt.
Danke,
Roobiks