# JTree node unselectable



## noisebreath (16. Jul 2009)

gibt es eine möglichket in einem jtree die nodes nicht auswählbar zu mahcen?


----------



## Ebenius (16. Jul 2009)

Meinst Du grundsätzlich alle Knoten? 
	
	
	
	





```
tree.setSelectionModel(new DefaultTreeSelectionModel() {

  @Override
  public void setSelectionPaths(TreePath[] pPaths) {}

  @Override
  public void addSelectionPaths(TreePath[] paths) {}

  @Override
  public void removeSelectionPaths(TreePath[] paths) {}
});
```
Wenn Du einzelne Knoten selektierbar haben willst, musst Du die Methoden oben entsprechend implementieren.

Happy hacking! Ebenius


----------



## noisebreath (16. Jul 2009)

na dann mach ich lieber das abfangen auf der übergeenden seite und sage  was einfach nicht angenommen wird von der auswahl


----------



## Ebenius (16. Jul 2009)

noisebreath hat gesagt.:


> na dann mach ich lieber das abfangen auf der übergeenden seite und sage  was einfach nicht angenommen wird von der auswahl


Den Satz verstehe ich nicht.  Ist das Thema damit schon geklärt? Ggf. den "Frage offen"-Knopf drücken, dann wird das Thema als erledigt markiert.

Ebenius


----------



## noisebreath (17. Jul 2009)

naja ich hab n JTree und mache ne auswahl drauf, dann drücke ich n Add Knopf hole mir die Auswahl des trees und gebe das weiter an meine Funktion. Hatte gedacht ich könnte eine Eben des JTrees (klassifikationsebene) irgendwie als nicht auswählbar markieren und nur die Blätter auswählbar  machen, aber wenn das nicht geht muss ich eben bei der übergabe per add knopf sagen dass er nur die Treenodes nehmen soll ausser die welche ich in einem expliziten vektor speichere. ich frage mich grad ob ich bei einem treenode nicht nach seinem parent fragen kann? da ich nur 2 level habe könnte ich ja dann sagen, das alle die ein parent != null haben blätter sind oder nicht?!


----------



## Ebenius (17. Jul 2009)

noisebreath hat gesagt.:


> ich frage mich grad ob ich bei einem treenode nicht nach seinem parent fragen kann?


Warum fragst Du _Dich_ das und nicht einfach die _API-Doc_? Siehe TreeNode.getParent(). Davon abgesehen: Alle Knoten erster Ebene sollten die Wurzel (und nicht 
	
	
	
	





```
null
```
) als Parent haben.



noisebreath hat gesagt.:


> Hatte gedacht ich könnte eine Eben des JTrees (klassifikationsebene) irgendwie als nicht auswählbar markieren und nur die Blätter auswählbar  machen, aber wenn das nicht geht muss


Natürlich geht das. Schrieb ich doch: 



Ebenius hat gesagt.:


> Wenn Du einzelne Knoten selektierbar haben willst, musst Du die Methoden oben entsprechend implementieren.



Wieso nicht einfach so?

```
tree.setSelectionModel(new DefaultTreeSelectionModel() {

  private TreePath[] filterPaths(TreePath[] paths) {
    final int validPaths = 0;
    for (int i = 0; i < paths.length; i++) {
      final TreePath path = paths[i];
      paths[i] = null;
      if (path.getPathCount() > 2) {
        paths[validPaths++] = path;
      }
    }

    if (validPaths != paths.length) {
      final TreePath[] oldArr = paths;
      paths = new TreePath[validPaths];
      System.arraycopy(oldArr, 0, paths, 0, validPaths);
    }

    return paths;
  }

  @Override
  public void setSelectionPaths(TreePath[] pPaths) {
    super.setSelectionPaths(filterPaths(pPaths));
  }
 
  @Override
  public void addSelectionPaths(TreePath[] paths) {
    super.addSelectionPaths(filterPaths(pPaths));
  }
 
  @Override
  public void removeSelectionPaths(TreePath[] paths) {
    super.removeSelectionPaths(pPaths);
  }
});
```
[size=-1]Im Browser getippt und ungetestet; aber so oder ähnlich sollte's gehen.[/size]

Ebenius


----------



## noisebreath (17. Jul 2009)

wie man sehen kann kam meine antwort gestern relativ spät ^^ daher sorry wegen der api, das hätte ich schon selber machen können. danke für die ausführliche antwort ich werd heute nachmittag mal schauen dass ich das so implementier.

lg
noise


----------

