tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
1252
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    zz0312 zz0312 ist offline Rookie
    Registriert seit
    Jan 2005
    Beiträge
    6
    Hallo,

    ich habe auf linken Seite einen JTree und auf der rechten Seite einen JPanel mit 3 JTextField und einen JButton(heisst "More")darauf, und ich möchte folgendes machen:

    Wie untenliegende Abbildung, Knoten "erstes mal" verweist auf die erste Eingabeszene, nachdem Eingabe können die
    Texte in JTextField durch Drücken den "More" Button gelöscht werden, damit man wieder in den JTextField irgendwas eintippen kann, und gleichzeitig auf der linken Seite wird einen Knoten "zweites mal", der quasi auf die zweite
    Eingabedaten verweist, erzeugt und in den JTree hinzugefügt. Wenn man jetzt auf "erstes mal" klickt, wird die erste Eingabetexte wieder in JTextField erscheinen.


    ------------------------------------------------------
    o--erstes mal | TextField1------------
    o--zweites mal | TextFiled2------------
    | TextFiled3------------
    |
    | --------
    | |More|
    -------

    Wer kann mir dabei helfen? Vielen Dank
     

  2. #2
    Avatar von takidoso
    takidoso takidoso ist offline Mitglied Brillant
    Registriert seit
    Aug 2004
    Ort
    Kömigstein
    Beiträge
    911
    wo hast Du denn da Probleme? Wie ist denn Dein Ansatz es zu tun?

    Takidoso
     

  3. #3
    zz0312 zz0312 ist offline Rookie
    Registriert seit
    Jan 2005
    Beiträge
    6
    Hallo,

    ich poste mal die Code.



    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24



    // Auf der linken Seite
    public class TreePanel extends JPanel{

    TreePanel(){
    DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
    DefaultMutableTreeNode author1 = new DefaultMutableTreeNode("Author1");
    DefaultMutableTreeNode author2 = new DefaultMutableTreeNode("Author2");
    DefaultMutableTreeNode author3 = new DefaultMutableTreeNode("Author3");
    ........................}}

    //Auf der rechte Seite
    public class Panel0 extends JPanel {

    Panle0(){
    JLabel jLabel4 = new JLabel("Name:");
    this.add(jLabel4);
    JTextField jTextField1 = new JTextField(30);
    this.add(jTextField1);
    //weitere JTextField
    .............................
    JButton moreButton = new JButton("More");
    this.add(moreButton); }}



    Knoten "Author1" verweist auf die erste Eingabeszene, nachdem Eingabe können die Texte in JTextField durch Drücken den "More" Button gelöscht werden, damit man wieder in den JTextField irgendwas eintippen kann, und gleichzeitig auf der linken Seite wird einen Knoten "Author2", der quasi auf die zweite Eingabedaten verweist, erzeugt und in den JTree hinzugefügt, analog ist der "Author3". Wenn man jetzt z.B auf "Auhtor1" klickt, wird die erste Eingabetexte wieder in JTextField erscheinen. (es wird passieren, wenn man mit den Eingaben ganz fertig ist und möchte nun mal gucken was er eingetippt hat, kann er durch den Knoten in JTree all Eingabedaten auf rechter Seite erscheinen lassen)

    Was jetzt funktioniert sind folgendes:

    ein Knoten "Author1" liegt in JTree, und wenn man darauf klickt, wird auf der rechten Seite das Panel mit JTextField und More Button angezeigt.

    was ich nicht realisieren kann sind folgendes:

    1. Nachdem ersten mal Eingabe einen Knoten(z.B Author2) in JTree durch Klick auf MoreButton einzufügen.


    Nehmen wir an, dass wir drei male in den JTextField eingegeben haben und drei Knoten(Author1, Author2, Author3) in JTree eingefügt.

    2. durch Klick auf Knoten Author1/Author2 das erste/zweite mal eingegebenen Texte wieder in JTextField angezeigt werden.
     

  4. #4
    Avatar von takidoso
    takidoso takidoso ist offline Mitglied Brillant
    Registriert seit
    Aug 2004
    Ort
    Kömigstein
    Beiträge
    911
    Zitat Zitat von zz0312

    was ich nicht realisieren kann sind folgendes:

    1. Nachdem ersten mal Eingabe einen Knoten(z.B Author2) in JTree durch Klick auf MoreButton einzufügen.


    Nehmen wir an, dass wir drei male in den JTextField eingegeben haben und drei Knoten(Author1, Author2, Author3) in JTree eingefügt.

    2. durch Klick auf Knoten Author1/Author2 das erste/zweite mal eingegebenen Texte wieder in JTextField angezeigt werden.
    Hi ho,
    also ich bin mir nicht sicher was Du willst, aber wenn ich Dich richtig verstehe willst Du einen Tree dynamisch erweitern und weiterhin ein aus dem Tree selektierten Knoten im Textfeld anzeigen, richtg?
    Es ist schon einige Zeit her, dass ich mir JTrees gearbeitet habe. Wichtig ist, dass Du in Komponenten in denen man selektieren kann normalerweise Selection-Listener anmelden kannst um Ereignisgesteuert von einer Selektions-Änderung windzubekommen. Dieser Selektionlistener muß halt dann das Textfeld befüllen.
    Der JTree hat auch ein Model (s. MVC-Pattern) , Ich gehe davon aus, das dort irgendwo sicher eine Methode gibt, die einem Knoten weitere Knoten anfügen kann, vorausgesetzt es handelt sich hierbei um ein veränderbares Modell.

    viel Glück

    Takidoso
     

  5. #5
    zz0312 zz0312 ist offline Rookie
    Registriert seit
    Jan 2005
    Beiträge
    6
    Hallo,

    du hast richtig verstanden was ich meine, und ich habe auch kapiert was du meinst, Problem ist wie kann man realisieren dass der Selektionlistener das Textfeld befüllt? Der soll, wie ich denke, den entprechenden EingabeTexte speichern, oder? kannst du mir ein Beispiel geben?
     

  6. #6
    Avatar von takidoso
    takidoso takidoso ist offline Mitglied Brillant
    Registriert seit
    Aug 2004
    Ort
    Kömigstein
    Beiträge
    911
    Zitat Zitat von zz0312
    Problem ist wie kann man realisieren dass der Selektionlistener das Textfeld befüllt? Der soll, wie ich denke, den entprechenden EingabeTexte speichern, oder? kannst du mir ein Beispiel geben?
    Also es gibt für den JTree folgendes Interface

    public interface TreeSelectionListener extends EventListener
    {
    /**
    * Called whenever the value of the selection changes.
    * @param e the event that characterizes the change.
    */
    void valueChanged(TreeSelectionEvent e);
    }

    Dieses implementierst Du entweder als benamte Klasse oder als Anonymen Adapter.
    wichtig ist, dass die Klasse die Möglichkeit hat Dein Textfeld zu befüllen. Das geht am einfachsten indem dieser von Dir implementierte Listener eine Unterklasse Deines Panels auf dem der Tree und das besagte Textfeld untergebracht sind ist. Alternativ kannst Du auch dem Listener z.B. in einer Methode die Referenz Deines Textfeldes mitgeben.

    um den selektierten Knoten herauszufinden schau Dir den TreeSelectionEvent an, er beherbergt unter anderem den aktuellen TreePath. die Routine getNewLeadSelectionPath() gibt Dir den aktuellen Pfad.

    vielleicht hilft Dir das schon weiter

    viel Glück

    Takidoso
     

  7. #7
    zz0312 zz0312 ist offline Rookie
    Registriert seit
    Jan 2005
    Beiträge
    6
    vielen Dank für deine nette Hilfe, ich würde erstmal nach deinen Tipps versuchen zu implementieren. Wenn ich wieder Problem habe, melde ich mich wieder.

    Gruss

    zz0312
     

  8. #8
    Avatar von takidoso
    takidoso takidoso ist offline Mitglied Brillant
    Registriert seit
    Aug 2004
    Ort
    Kömigstein
    Beiträge
    911
    Grüß Dich,
    mir fällt gerade auf, dass ich möglicherweise ungschickt und nicht eindeutig ausgedrückt habe.
    Unterklasse sollte besser eingebettete Klasse heißen.
    Außerdem kannst Du auch in Deinem Listener die selektierte Komponente glaube ich auch mit dem JTree selbst herausbekommen.

    viel Glück

    Takidoso
     

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 26.05.10, 15:44
  2. Anfänger Problem- Java Eingabe durch Datei
    Von Fraenzchen im Forum Java
    Antworten: 9
    Letzter Beitrag: 12.03.08, 03:00
  3. JTextField - Eingabe begrenzen
    Von BladeS_MC im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 20.05.07, 16:46
  4. DnD JTree & JTextField
    Von flashOr im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 31.01.06, 12:35
  5. Prüfung einer Eingabe in JTextField
    Von andreas2000 im Forum Java
    Antworten: 12
    Letzter Beitrag: 07.12.05, 20:44