[NETBEANS] Jtree + netbeans

0

Pytanie banalne ale uczę się obsługi Netbeans i mam problem z "dobraniem się" do domyślnych parametrów Jtree. Dla wyjaśnienia: kontrolka Jtree po wstawieniu w trybie design do formatki, ma domyślne drzewko. I właśnie tu mam problem bo nie mogę usunąc tych domyślnych gałęzi posługując się properties ani kodem źródłowym. Po prostu nigdzie nie widać momentu tworzenia tego domyślnego drzewa. A może ja tego nie mogę znaleźć.

0

poszukaj właściwości model

0

A może wiesz również w którym miejscu można modyfikować zawartośc klasy i konstruktora. Oczywiście chodzi mi dalej o kontrolkę dodaną z menu Palette. Widzę, że jest zakładka code w properties, tylko dosyć dużo tam różnych pól...

0

Popatrz na "Custom creation code" czy coś w ten deseń.

Domyślne drzewko jest chyba tworzone wtedy, jak JTree zostało powołane do życia bezargumentowym konstruktorem.

0

No właśnie custom create code działa na już utworzonym obiekcie. Ja potrzebuję na ingerencję w samą klasę (np. nowe właściwości lub metody) i w konstruktora. Wprawdzie znalazłem cos takiego jak Pre-creation code ale chciałbym podejrzeć gdzie wpisy tam dokonywane lokują się w kodzie źródłowym.
Wiem, że mógłbym utworzyć własną klasę dziedziczącą po Jtree, itp itd, ale obiekt utworzony w oparciu o nią nie będzie widoczny w opcji Design, chyba że ktos ma inne zdanie?

0

Jeśli będzie dziedziczyć po JTree, to będzie widoczny jako JTree w designerze. Ja to robiłem tak, że wrzucalem na formę JTree, klikam PPM na nim i wybieram Customize Code, następnie w oknie dialogowym przestawiam przy pierwszej linijce z "default code" na "custom creation" i zmieniam:

new javax.swing.JTree()

na np.

new MySuperJTree()
0

thx. Dodałem konstruktor do klasy myTree dziedziczącej po JTree. Dodałem klika gałęzi z liściami ale w JscrollPane, pod który jest podczepione moje drzewo nic się nie wyświetla. :(

klasa MyTree:

package desktopapplication1;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;

class myTree extends JTree{
    public JTree drzewo; 
    
    public myTree() {
        DefaultMutableTreeNode top = new DefaultMutableTreeNode("root");
        createNodes(top);
        drzewo = new JTree(top);
    }
    
    private void createNodes(DefaultMutableTreeNode top){
        DefaultMutableTreeNode category = null;
        DefaultMutableTreeNode part = null;
        
        category = new DefaultMutableTreeNode(new Kategoria("Zawieszenie", 1)); 
        top.add(category);
        part = new DefaultMutableTreeNode(new Kategoria("łącznik stabilizatora",1));
        category.add(part);
        System.out.println("konstruktor myTree");
    }

}

a tutaj klasa Kategoria:

package desktopapplication1;

public class Kategoria {
    private String nazwa;
    private int id;
    
    public Kategoria(String nazwa, int id){
      this.nazwa = nazwa;
      this.id = id;
      System.out.println("konstruktor Kategoria");

    } 
    public String getNazwa(){
        return this.nazwa;
    }
    
    @Override
    public String toString() { return nazwa; }
    
}
0

Problem rozwiązany.

trzeba było dodać w konstruktorze klasy głównej wpisać:

 DefaultMutableTreeNode top = new DefaultMutableTreeNode("Lista części");
 createNodes(top);
 treeModel = new DefaultTreeModel(top);
 drzewo.setModel(treeModel);

funkcja createNodes to w moim przypadku:

private void createNodes(DefaultMutableTreeNode top) {
        DefaultMutableTreeNode category = null;
        DefaultMutableTreeNode part = null;

        category = new DefaultMutableTreeNode("Zawieszenie");
        top.add(category);

        //original Tutorial
        part = new DefaultMutableTreeNode(new Kategoria
            ("Wahacz",1));
        category.add(part);

        //Tutorial Continued
        part = new DefaultMutableTreeNode(new Kategoria
            ("sworzeń",2));
        category.add(part);


        category = new DefaultMutableTreeNode("Hamulce");
        top.add(category);

        //VM
        part = new DefaultMutableTreeNode(new Kategoria
            ("Klocki",3));
        category.add(part);

}

klasa Kategoria jest w poprzednim poście.

Może się komuś to przyda, bo trochę się namęczyłem zanim załapałem :)

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