Hallo,
wie kann man prüfen ob ein zuvor gespeicherter TreePath noch gültig ist
oder z.B. durch DnD verschoben wurde ?
Ich habe mir den TreePath zu dem Knoten NODE gemerkt.
Dann habe ich den Knoten mit removeNodeFromParent(NODE) gelöscht. Danach habe ich ein reload(parent) gemacht. Das Model sollte nun eigentlich wieder aktuell sein.
Wenn ich nun an einer anderen Stelle testen muß ob der gemerkte TreePath noch gültig ist habe ich folgendes gemacht:
tree.setSelectionPath(treePath);
if(tree.getSelectionPath().equals(treePath))
{
System.out.println(„gültig“);
}
else
System.out.println(„ungültig“);
Warum gibt mir dieser Check immer „gültig“ zurück. Eigentlich dürfte sich doch der treePath nicht mehr selektieren lassen da er ja zuvor gelöscht wurde ?
Wie kann man prüfen ob ein TreePAth noch gültig ist ?
Danke
Albert
tree.setSelectionPath(treePath);
if(tree.getSelectionPath().equals(treePath))
{
System.out.println("gültig");
}
else
System.out.println("ungültig");
Warum gibt mir dieser Check immer „gültig“ zurück. Eigentlich
Weil du den selectionPath von tree mit treePath setzt und
dann abfragst, ob dieser dann treePath gleicht. Das tut er
natuerlich, da du ihn ja zwischenzeitlich nicht aenderst.
Das ist etwa so wie:
int i = 0;
if (i == 0) {
sysout(gueltig);
else
sysout(ungueltig);
Gruss, Patrick
Hallo Patrick,
das verstehe ich nicht ganz.
Wenn ich doch sage tree.setSelectionPath(treePath) und es diesen treePath im Baum nicht mehr gibt, dann müßte die Methode doch fehlschlagen. Also würde ich erwarten, dass mir die Methode tree.getSelectionPath() z.B. null zurückgibt und nicht den nicht mehr vorhandenen treePath.
Hast Du eine Idee wie man die Prüfung sonst machen könnte ?
Danke
Albert
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Wenn ich doch sage tree.setSelectionPath(treePath) und es
diesen treePath im Baum nicht mehr gibt, dann müßte die
Ja, aber ist denn nach dem Loeschen der Node auch dein TreePath
Object zwangslaeufig ungueltig? Ich kann dir da nicht so recht
helfen. Wirf doch mal einen Blick hier hin:
http://java.sun.com/docs/books/tutorial/uiswing/comp…
Gruss, Patrick
Da hab ich eine Lösung gefunden:
public boolean isPathValid(TreePath path)
{
TreeModel model = tree.getModel();
if (path.getPathCount() == 0)
{
return model.getRoot().equals(path.getPathComponent(0));
}
for (int x = 1; x [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]