G
Gast
Gast
Hallo Zusammen,
ich habe mir jetzt schon verschiedene Sachen rausgesucht, um einen schönen Optionsdialog mit JTree hinzubekommen.
Nun klappt das im Groben ganz gut, allerdings habe ich noch einige Probleme:
1. Wie kann ich den kompletten Knotenpfad ermitteln, also beispielsweise Wurzel, Buchstabe. Bei der Methode Objekt.toString bekomme ich nur noch den letzten Knoten raus.
2. Die Panels reagieren nicht richtig. Im jetzigen Code soll eigentlich das Panel geleert werden und dann neuen JLabel etc. gesetzt werden. So wie es jetzt ist, passiert garnichts. Wenn ich showPanel.removeAll(); deaktiviere, dann bekommt man wenigstens eine Veränderung.
Wäre Klasse, wenn ihr mir weiterhelfen könntet.
Danke und Gruß
ich habe mir jetzt schon verschiedene Sachen rausgesucht, um einen schönen Optionsdialog mit JTree hinzubekommen.
Nun klappt das im Groben ganz gut, allerdings habe ich noch einige Probleme:
1. Wie kann ich den kompletten Knotenpfad ermitteln, also beispielsweise Wurzel, Buchstabe. Bei der Methode Objekt.toString bekomme ich nur noch den letzten Knoten raus.
2. Die Panels reagieren nicht richtig. Im jetzigen Code soll eigentlich das Panel geleert werden und dann neuen JLabel etc. gesetzt werden. So wie es jetzt ist, passiert garnichts. Wenn ich showPanel.removeAll(); deaktiviere, dann bekommt man wenigstens eine Veränderung.
Wäre Klasse, wenn ihr mir weiterhelfen könntet.
Danke und Gruß
Code:
import javax.swing.BorderFactory;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeNode;
public class Options extends JDialog {
private JPanel showPanel;
private JLabel testLabel;
private static final long serialVersionUID = 1L;
private Options() {
// Wurzelknoten herstellen
TreeNode root = createTree();
// Wurzelknoten wird dem neuen JTree im Konstruktor übergeben
JTree tree = new JTree( root );
// Eventhandler
tree.getSelectionModel().addTreeSelectionListener( new Aktion() );
// Dialog erstellen
JDialog meinDialog = new JDialog();
meinDialog.setLayout( null );
// Treepanel
JPanel treePanel = new JPanel();
treePanel.setLayout( null );
treePanel.setBounds( 10, 10, 220, 320 );
//treePanel.setBorder( BorderFactory.createEtchedBorder() );
JScrollPane treeScrollPane = new JScrollPane( tree );
treeScrollPane.setBounds( 10, 10, 200, 300 );
// JScrollPane dem Panel hinzufügen
treePanel.add( treeScrollPane );
// AnzeigePanel
showPanel = new JPanel();
showPanel.setLayout( null );
showPanel.setBounds( 250, 20, 300, 300 );
showPanel.setBorder( BorderFactory.createEtchedBorder() );
testLabel = new JLabel("AufrufPanel");
testLabel.setBounds( 10, 10, 100, 100);
showPanel.add( testLabel );
// Panel dem Dialog hinzufügen
meinDialog.add( treePanel );
meinDialog.add( showPanel );
meinDialog.setDefaultCloseOperation( JDialog.DISPOSE_ON_CLOSE );
meinDialog.pack();
meinDialog.setSize( 600, 400 );
meinDialog.setVisible( true );
}
private static TreeNode createTree() {
// Knoten erstellen
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Wurzel");
DefaultMutableTreeNode letters = new DefaultMutableTreeNode("Buchstaben");
DefaultMutableTreeNode digits = new DefaultMutableTreeNode("Zahlen");
DefaultMutableTreeNode letterA = new DefaultMutableTreeNode("A");
DefaultMutableTreeNode letterB = new DefaultMutableTreeNode("B");
DefaultMutableTreeNode letterC = new DefaultMutableTreeNode("C");
DefaultMutableTreeNode digit1 = new DefaultMutableTreeNode("1");
DefaultMutableTreeNode digit2 = new DefaultMutableTreeNode("2");
DefaultMutableTreeNode digit3 = new DefaultMutableTreeNode("3");
// Verknüpfen
letters.add( letterA );
letters.add( letterB );
letters.add( letterC );
digits.add( digit1 );
digits.add( digit2 );
digits.add( digit3 );
root.add( letters );
root.add( digits );
return root;
}
public static void main (String args[]) {
Options test = new Options();
}
/** Klasse für Events */
class Aktion implements TreeSelectionListener {
public void valueChanged( TreeSelectionEvent e ) {
Object templetzterKnoten = e.getNewLeadSelectionPath().getLastPathComponent();
String letzterKnoten = templetzterKnoten.toString();
System.out.println(letzterKnoten);
if (letzterKnoten.equals("Buchstaben")) {
testLabel.setText("Buchstabe");
//showPanel.setBorder( BorderFactory.createEtchedBorder() );
showPanel.removeAll();
//JLabel testLabel2 = new JLabel("Zwei");
//testLabel2.setBounds( 20, 30, 100, 100);
//showPanel.add( testLabel2 );
} else {
testLabel.setText("Zahlen");
}
}
}
/** Testmethode mit Textfeld */
private void getBuchstaben() {
JLabel testLabel = new JLabel("Drei");
testLabel.setBounds( 10, 10, 100, 100);
showPanel.add( testLabel );
}
}