NetBeans + JTree + klikniecie = ???

0

Witam,

mam taki problem że zbudowałem juz fajny programik i wszystko jest ok,tylko cala sprawa rozchodzi sie o to ze przy kliknieciu drzewka nic sie nie dzieje, nie rozumiem jak ten komponent dziala pod Netbeans,
wiadomo ze mozna stworzyc lisinera poza NetBeansem, ale nie o to mi chodzi,
I pytaie czy nie ma na tym forum jakiegoś pioniera, który przeszedl tą gehenne i zna odpowiedz na proste pytanie JAK!

Jak to działa gdzie mam dodać jakąś akcje, dodam że prostą, jeśli nacisnę któryś nod drzewka to obok w JTable wyświetli się jego ścierzka, nic więcej, PROSZĘ o jakąś pomoc, jestem sfrustrowany ;(

0

Ja robilem w ten sposob: w JTextField wyswietlalem pelna sciezke do elementu kliknietego w JTree. W NetBeansie mozna dodac listenera taK: przejdz to trybu Design, zaznacz obiekt klasy JTree i kliknij prawym guzikiem. Z menu wybierz kolejno: Events, TreeSelection, ValueChanged. NetBeans utworzy caly potrzebny kod, teraz wystarczy oprogramowac zdarzenie. Na przyklad w moim przypadku bedzie to wygladac tak:
w metodzie InitComponents dodano:

jTree1.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
  public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
    jTree1ValueChanged(evt);
  }
});

i stworzono nowa metode jTree1ValueChanged:

private void jTree1ValueChanged(javax.swing.event.TreeSelectionEvent evt) {                                    
  jTextField1.setText(jTree1.getSelectionPath().toString());
}

Ja dodalem od siebie tylko jedna linijke w tej drugiej metodzie. Powodzenia

0

Hmm no właśnie tak robiłem i nic, może kod wkleje, nie wiem czy to jakaś literówka, głowa mnie już od tego boli :C

    private void jTreeSearchValueChanged(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_jTreeSearchValueChanged
// TODO add your handling code here:
        jTextField2.setText(jTreeSearch.getSelectionPath().toString());
        setSize(527, 573);
        jTextAbilities.setText("asdsasad");
        System.out.println("Wcisnieto");
    }//GEN-LAST:event_jTreeSearchValueChanged

i lisiner automatycznie wygenerowany

        jTreeSearch.setEnabled(false);
        jTreeSearch.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
            public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
                jTreeSearchValueChanged(evt);
            }
        });

        jScrollPane3.setViewportView(jTreeSearch);

Hmm i nie wiem czemu to niedziała, ? [???] please help

0

a probowales bez tego:
jTreeSearch.setEnabled(false);??
Albo zamien chociaz false na true...

0

Skoro w InitComponents drzewo juz jest tworzone, to wystarczy mu potem nadac odpowiedni model.
W konstruktorze, zamiast
jTreeSearch = new javax.swing.JTree(treeModel);
daj
jTreeSearch.setModel(treeModel);

U mnie dziala :>

0

Ok działa ale tylko dla domyślnego drzewa, a ja moje drzewko wypełniam plikiem XML. w taki sposob:

// w konstrukotrze
        initComponents();

        root = new DefaultMutableTreeNode("Root");
        treeModel = new DefaultTreeModel(root);
        
        jTreeSearch = new javax.swing.JTree(treeModel);
        jScrollPane3.setViewportView(jTreeSearch);
        jTreeSearch.setShowsRootHandles(true);
        jTreeSearch.setRootVisible(false);

No i sprawa prosta, bo nadpisuje stare drzewko nowym, pytanie tylko jak dodać ponownie akction lisinera albo jak dołaczyć DefaultMutableTreeNode i DefaultTreeModel w funkci initComponents, bo to w koncu beans i mi nato nie pozwoli ? [glowa]

0

Eureka! W końcu się działa sie i nic nie będzie , wielkie dzięki, działa teraz :D [green]
Aj i dzieki za odzew, tyle odpowiedzi dawno nie dostałem :-) [browar]

1 użytkowników online, w tym zalogowanych: 0, gości: 1