JTree und ein weiteres Panel

Status
Nicht offen für weitere Antworten.

Alex_winf01

Top Contributor
Hallo,

ich habe mal folgende Frage:

ich habe mir folgenden Beispielcode angeschaut:

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;

public class TreeDemo {
    public static void main( String[] args ) {
        TreeFrame frm = new TreeFrame(
            "Tree Demo"
        );

        frm.setVisible( true );
        frm.pack();
    }
}

class TreeFrame extends JFrame {
    public TreeFrame( String title ) {
        super( title );

        addWindowListener(
            new WindowAdapter() {
                public void windowClosing(
                    WindowEvent ev
                ) {
                    System.exit( 0 );
                }
            }
        );

        
        final JFrame frm = this;
        Container cp = getContentPane();

        // Der Root-Knoten für den Tree
        DefaultMutableTreeNode top =
            new DefaultMutableTreeNode(
                "/"
            );

        
        createNodes( top );

        
        final JTree tree = new JTree( top, true );

        
        tree.getSelectionModel().setSelectionMode(
            TreeSelectionModel.SINGLE_TREE_SELECTION
        );

        
        JScrollPane sp = new JScrollPane( tree );

        
        tree.addTreeSelectionListener(
            new TreeSelectionListener() {
                public void valueChanged(
                    TreeSelectionEvent ev
                ) {
                    DefaultMutableTreeNode node =
                    (DefaultMutableTreeNode)
                tree.getLastSelectedPathComponent();

                    if ( node == null ) return;

                    Object nodeInfo =
                        node.getUserObject();
                    System.out.println(
                        "selektiertes Objekt = " +
                        node
                    );
                }
            }
        );

        
        tree.addTreeExpansionListener(
            new TreeExpansionListener() {
                public void treeCollapsed(
                    TreeExpansionEvent ev
                ) {
                    frm.pack();
                }

                public void treeExpanded(
                    TreeExpansionEvent ev
                ) {
                    frm.pack();
                }
            }
        );

       
        MouseListener ml = new MouseAdapter() {
            public void mousePressed(
                MouseEvent ev
            ) {
                if ( ev.getClickCount() != 2 ) {
                    return;
                }

                int selRow = tree.getRowForLocation(
                    ev.getX(), ev.getY()
                );

              
                TreePath selPath =
                    tree.getPathForLocation(
                        ev.getX(), ev.getY()
                    );

                if ( selRow < 0 ) return;

              
                if ( tree.isCollapsed( selRow ) )
                    tree.expandRow( selRow );
                else tree.collapseRow( selRow );

                System.out.println(
                    "Doppelklick in Zeile = " +
                    selRow
                );

                if (
                    tree.isCollapsed( selRow )
                ) {
                    tree.expandRow( selRow );
                }
                else {
                    tree.collapseRow( selRow );
                }
            }
         };

         tree.addMouseListener( ml );


        cp.add( sp );
    }

    public void createNodes(
        DefaultMutableTreeNode top
    ) {
        DefaultMutableTreeNode e =
            new DefaultMutableTreeNode( "etc" );

        top.add( e );

        e.add(
            new DefaultMutableTreeNode(
                "inittab", false
            )
        );

        DefaultMutableTreeNode n =
            new DefaultMutableTreeNode( "usr" );
        top.add( n );
        n.add(
            new DefaultMutableTreeNode( "share" )
        );
        DefaultMutableTreeNode n1 =
            new DefaultMutableTreeNode( "local" );
        n.add( n1 );
        n1.add(
            new DefaultMutableTreeNode( "bin" )
        );
        n1.add(
            new DefaultMutableTreeNode( "lib" )
        );
        n1.add(
            new DefaultMutableTreeNode( "man" )
        );
    }
}

Nun möchte ich folgendes realisieren:

Links der Baum. Der Anwender klickt auf ein Node und rechts dazu erscheint eine Art "Hilfetext". Ähnlich wie bei der Office-Hilfe. Kann mir da jemand helfen?
 

Wildcard

Top Contributor
Wenn das wirklich eine Hilfe werden soll, würde ich JavaHelp nehmen.
Ansonsten die üblichen Verdächtigen: Listener und CardLayout.
 

André Uhres

Top Contributor
Du könntest eine Klasse "NodeInfo" machen als UserObject mit Namen und Wert vom Node:
Code:
DefaultMutableTreeNode top =new DefaultMutableTreeNode(new NodeInfo("0", "/"));
Den gleichen Namen (hier "0") gibst du jeweils in den Constraints für das CardLayout an:
Code:
cardlayout = new CardLayout();
cards = new JPanel(cardlayout);
cards.add(new JLabel("Help about root"), "0");
...
Auf diese Weise hast du jeden Node mit seiner Helpinfo verbunden.
In "valueChanged" kannst du dann mit "cardlayout.show(..)" die passende Helpinfo anzeigen:
Code:
NodeInfo nodeInfo = (NodeInfo) node.getUserObject();
cardlayout.show(cards, nodeInfo.getName());
Das JPanel "cards" kommt nach BorderLayout.EAST
und enthält alle "Karten" (die Karten müssen natürlich keine JLabels sein, das war nur als Beispiel gedacht).
Code:
cp.add(cards, BorderLayout.EAST);
CardLayout tutorial
Beispiel für die Klasse NodeInfo:
Code:
public class NodeInfo {

    private String value;
    private String name;

    public NodeInfo(String name, String value) {
        super();
        this.name = name;
        this.value = value;
    }

    public String getName() {
        return name;
    }

    @Override
    public String toString() {
        return value;
    }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
FrittenFritze JTree, LazyLoading und "Rückwärtstraversion" AWT, Swing, JavaFX & SWT 3
J Falsches Rendern durch JCheckBox in eigenem JTree AWT, Swing, JavaFX & SWT 6
F jTree und das Model aus einer eigenen Klasse AWT, Swing, JavaFX & SWT 1
F Jtree aus Klasse mit Arraylisten AWT, Swing, JavaFX & SWT 1
A Swing JList zu JTree AWT, Swing, JavaFX & SWT 11
richis-fragen JTree +/- verschwidet wenn Knoten keine Kinder hat... AWT, Swing, JavaFX & SWT 6
RalleYTN Modaler Dialog und JTree Node mit sehr... seeeeehr vielen Elementen AWT, Swing, JavaFX & SWT 6
Z Swing JTree DefaultMultipleTreeNode Repräsentation ändern AWT, Swing, JavaFX & SWT 1
Z Swing Drag&Drop zwischen JTable und JTree AWT, Swing, JavaFX & SWT 4
W Swing Anzeigefehler bei JTree AWT, Swing, JavaFX & SWT 1
S Zwei JTree, ein Model, bei Selection im ersten JTree soll der zweite die Inhlate anzeigen AWT, Swing, JavaFX & SWT 2
S JRadioButton und JCheckBox im JTree AWT, Swing, JavaFX & SWT 14
H Swing JTree: Zählt der rootNode mit? AWT, Swing, JavaFX & SWT 2
krgewb Swing JTree - Farbe von nodes ändern AWT, Swing, JavaFX & SWT 4
R JTree behandeln AWT, Swing, JavaFX & SWT 2
E Swing Copy und Paste eines einzelnen Knoten aus einem JTree AWT, Swing, JavaFX & SWT 1
U dynamisches JTree erstellen AWT, Swing, JavaFX & SWT 2
J JTree updaten AWT, Swing, JavaFX & SWT 2
N Swing JTree Problem beim erstellen der Knoten AWT, Swing, JavaFX & SWT 0
H JTree in JScrollPane passt sich nicht an Größe von JPanel an AWT, Swing, JavaFX & SWT 2
T Swing API Frage zu Verzeichnisbäumen und JTree AWT, Swing, JavaFX & SWT 1
T JTree mit Symbolen? AWT, Swing, JavaFX & SWT 8
R Anfängerfrage: Ansichten des JTree AWT, Swing, JavaFX & SWT 1
H Swing JTree Minimumgröße AWT, Swing, JavaFX & SWT 2
F Swing JTree + DiffUtils // Markierung Nodes aufheben AWT, Swing, JavaFX & SWT 2
I JTree wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
M Swing JTree AWT, Swing, JavaFX & SWT 4
M Nodes in JTree nicht anzeigen AWT, Swing, JavaFX & SWT 0
T JTree mit Cloud verbinden AWT, Swing, JavaFX & SWT 0
H JTree Probleme AWT, Swing, JavaFX & SWT 9
F Swing Drag and Drop in JTree aus verschiedenen Listen AWT, Swing, JavaFX & SWT 6
M JButton wird von JTree überdeckt AWT, Swing, JavaFX & SWT 4
J Auf Dateien in JTree zugreifen AWT, Swing, JavaFX & SWT 15
F jTree.startEditingAtPath(path); funktioniert nicht bei eigenem CellEditor? AWT, Swing, JavaFX & SWT 8
D Swing JTree Steuerung AWT, Swing, JavaFX & SWT 11
S Swing JTree verwirrt mich AWT, Swing, JavaFX & SWT 2
T JTree - Elemente mit Doppelklick auswählen AWT, Swing, JavaFX & SWT 6
J JTree speichern AWT, Swing, JavaFX & SWT 4
N Swing JTree TreeCellRenderer mit html und automatischen Zeilenumbruch AWT, Swing, JavaFX & SWT 8
O Swing JTree um Label (oder Panel) erweitern AWT, Swing, JavaFX & SWT 9
T JTree, Knoten mehrmals verwenden AWT, Swing, JavaFX & SWT 5
B JTree mit Ordneransicht in JPanel einbinden AWT, Swing, JavaFX & SWT 4
D JTree node reagiert bei Klick nicht immer AWT, Swing, JavaFX & SWT 2
M Swing JTree: Wie kann ich die Hintergrundfarbe der selection ändern?!?! AWT, Swing, JavaFX & SWT 7
D Mehrmals auf Node im JTree klicken AWT, Swing, JavaFX & SWT 2
D JSplitPane, Jtree, CardLayout (constraint must be a string) AWT, Swing, JavaFX & SWT 9
N Swing FileFilter lässt JTree sich nicht öffnen AWT, Swing, JavaFX & SWT 2
X Swing 2 TreeModel und ein JTree synchronisieren AWT, Swing, JavaFX & SWT 3
N Swing JTree TreePath zu Windows Pfad? AWT, Swing, JavaFX & SWT 2
RELAXccc Swing JTree + JScrollPane, refresh Problem AWT, Swing, JavaFX & SWT 17
X Swing JTree aktualisieren AWT, Swing, JavaFX & SWT 2
V Swing JTree - Umbenennen selbst handlen. AWT, Swing, JavaFX & SWT 2
E Übergebenem JTree Blätter hinzufügen AWT, Swing, JavaFX & SWT 2
E Wert eines selektierten Knotens in einem JTree auslesen AWT, Swing, JavaFX & SWT 3
A Swing JTree - Nodes expanden AWT, Swing, JavaFX & SWT 2
D JTree nach Klick auf einen Hyperlink aktualisieren AWT, Swing, JavaFX & SWT 3
B JTree AWT, Swing, JavaFX & SWT 9
T Menüacceleratoren verschwinden bei JTree AWT, Swing, JavaFX & SWT 5
1 Swing JTree collapse child nodes AWT, Swing, JavaFX & SWT 4
B JTree - sehr individuell AWT, Swing, JavaFX & SWT 3
G Swing JTree - Verbindungslinien entfernen AWT, Swing, JavaFX & SWT 4
A Swing Herausfinden ob bei JTree Klick auf "+"/"-" anahnd x,y AWT, Swing, JavaFX & SWT 2
S Swing JTree und seine Listener... AWT, Swing, JavaFX & SWT 4
L Swing JTree wird nicht selektiert AWT, Swing, JavaFX & SWT 2
P [JTree] Markierhilfe der Drop-Location selber gestalten. AWT, Swing, JavaFX & SWT 4
A JTree aus Pfaden erzeugen AWT, Swing, JavaFX & SWT 3
K Swing Hilfe beim JTree! AWT, Swing, JavaFX & SWT 3
X Datensätze in JTree AWT, Swing, JavaFX & SWT 2
L Update JTree Verzeichnisse AWT, Swing, JavaFX & SWT 9
E JTree Auswahl AWT, Swing, JavaFX & SWT 2
K JTree width der Treenodes auf 100% AWT, Swing, JavaFX & SWT 6
C JTree LastSelectedPathComponent benutzen? AWT, Swing, JavaFX & SWT 3
S Swing JTree Node Text nicht richtig angezeigt AWT, Swing, JavaFX & SWT 2
Landei Swing JTree mit "Tabellenzeilen"? AWT, Swing, JavaFX & SWT 5
Rudolf Swing JTree Node anhand vom Namen finden AWT, Swing, JavaFX & SWT 4
S JTree Elemente nach BaumLevel abspeichern AWT, Swing, JavaFX & SWT 2
Z JTree rootChilds AWT, Swing, JavaFX & SWT 2
D JTree DefaultMutableTreeNode ActionPerformed AWT, Swing, JavaFX & SWT 3
T JTree Daten in DB schreiben am besten SQL AWT, Swing, JavaFX & SWT 21
O JTree/TreeModel/DefaultMutableTreeNodes thread safe machen AWT, Swing, JavaFX & SWT 3
J Lazy Loading eine JTree während Scrollen AWT, Swing, JavaFX & SWT 11
S JTree & JComboBox - Elemente übers Fenster hinaus anzeigen AWT, Swing, JavaFX & SWT 9
E Swing JTree AWT, Swing, JavaFX & SWT 2
J Swing Lazy Loading in JTree wenn gescrollt wird AWT, Swing, JavaFX & SWT 3
N Knotenanordnung in JTree AWT, Swing, JavaFX & SWT 4
S JTree mit Liste zur Speicherung AWT, Swing, JavaFX & SWT 3
S Jtree CheckNode mit JPanel AWT, Swing, JavaFX & SWT 32
G JTree entfernt Nodes nicht AWT, Swing, JavaFX & SWT 12
C Swing JTree und TreeModel AWT, Swing, JavaFX & SWT 15
S Swing JTree wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
J JTree AWT, Swing, JavaFX & SWT 2
R [JTree/DefaultTreeCellRenderer] eigenes Renderer-Panel, so breit wie der JTree AWT, Swing, JavaFX & SWT 2
S Swing JTree mit KeyListener AWT, Swing, JavaFX & SWT 2
E Swing JTree setSelectedPath funktioniert nicht?! AWT, Swing, JavaFX & SWT 5
E JTree Autoscroll bei Drag and Drop AWT, Swing, JavaFX & SWT 4
S JTree aus List<File> erstellen AWT, Swing, JavaFX & SWT 8
C Swing MouseEntered(?) für jeden Node im JTree AWT, Swing, JavaFX & SWT 4
M JTree mit eigenen Knoten - Zugriff auf Daten AWT, Swing, JavaFX & SWT 6
C Swing JTree UI Probleme AWT, Swing, JavaFX & SWT 6
G JTree - Observer oder Listener? AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen


Oben