Wie kann man bei CheckBoxTrees die Checkboxzustände ändern?

Status
Nicht offen für weitere Antworten.

theuserbl

Bekanntes Mitglied
Hi!

Habe nun auch mal wieder ein Problem. :(

Ich möchte gerne ein JTree mit Checkboxes haben, bei dem ich durch ein Array vorher festlegen kann, welche Checkboxes markiert sind. Und später, wenn ich bei einigen Checkboxes Haken gesetz habe und bei anderen sie entfernt habe, dann will ich auch auslesen können, an welcher Stelle die Häkchen nun sind.

Für Checkboxen im JTree (wo auch die normalen Icons im JTree erhalten bleiben) gibt es ein CheckBoxTree von Santhosh Kumar:
http://www.jroller.com/santhosh/date/20060611
https://myswing.dev.java.net/

Nur leider habe ich damit meine Probleme. Ich kann Checkboxen mit der Maus ein Häkchen versehen und wieder wegmachen. Doch auslesen, wo es sich befindet oder über ein Array automatisch bestimmte Teile selektieren geht bei mir irgendwie nicht.
Durch seinen Quellcode der Implemetierung vom CheckBoxTree, werde ich ehrlich gesagt auch nicht ganz schlau draus. Steig da nicht so durch.

Habe sein Beispielprogramm bisher schon mal hier hin geändert:
Java:
import skt.swing.tree.*;
import skt.swing.tree.check.*;
import javax.swing.*;
import javax.swing.tree.TreePath;
import java.awt.*;
import java.awt.event.*;

public class CheckTreeDemo extends JFrame implements ActionListener {
    JTree tree;
    JButton buttonSel;
    JButton buttonUnsel;
    private CheckTreeSelectionModel selectionModel;

    private CheckTreeDemo() {
      super ("JTree with CheckBoxes");
      tree = new JTree();
      JScrollPane sc = new JScrollPane(tree);
      CheckTreeManager checkTreeManager = new CheckTreeManager(tree, true, null);

      selectionModel = new CheckTreeSelectionModel(tree.getModel(), true);

      JSplitPane sp = new JSplitPane();
      sp.setDividerLocation(130);
      sp.setDividerSize(2);

      buttonSel = new JButton("Aktivieren");
      buttonSel.addActionListener(this);

      buttonUnsel = new JButton("Deaktivieren");
      buttonUnsel.addActionListener(this);

      sp.setLeftComponent(buttonSel);
      sp.setRightComponent(buttonUnsel);

      setLayout(new BorderLayout());
      add(sc, BorderLayout.CENTER);
      add(sp, BorderLayout.SOUTH);

    }



    public void actionPerformed(ActionEvent event) {
      if (event.getSource() == buttonSel) {
        TreePath path = tree.getSelectionPath();
        System.out.println(path.toString());
//        System.out.println(tree.getPathForRow(2));
  //      selectionModel.addSelectionPath(path);
        //selectionModel.removeSelectionPath(path);

        TreePath[] paths = new TreePath[1];
        paths[0] = path;
        selectionModel.addSelectionPaths(paths);


        TreePath[] treePaths = selectionModel.getSelectionPaths();
        if (treePaths != null) {
          for (int i=0; i<=treePaths.length-1; i++) {
            System.out.println("**"+treePaths[i]+"**");
          }
        } else {
          System.out.println("****");
        }

        tree.treeDidChange();
        tree.updateUI();
      } else if (event.getSource() == buttonUnsel) {
        TreePath path = tree.getSelectionPath();
        System.out.println(path.toString());

        TreePath[] paths = new TreePath[1];
        paths[0] = path;
        selectionModel.removeSelectionPaths(paths);

        TreePath[] treePaths = selectionModel.getSelectionPaths();
        if (treePaths != null) {
          for (int i=0; i<=treePaths.length-1; i++) {
            System.out.println("**"+treePaths[i]+"**");
          }
        } else {
          System.out.println("****");
        }

        tree.treeDidChange();
        tree.updateUI();

      }
    }

    public static void main(String[] args){



      CheckTreeDemo frame = new CheckTreeDemo();

      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setSize(300, 400);
      frame.setVisible(true);
    }
}

Was bei mir bisher funktioniert ist, daß ich Einträge der Reihe nach selektieren und deselektieren kann. Und die ausgewählten Eintrage stehen alle im treePaths-Array drin. Nur hat das, was in dem Array steht, rein garnichts mit den Checkboxen zu tun.


Kann mir da irgendjemand weiterhelfen?

Oder ist es in diesem Fall besser Santhosh direkt zu mailen/fragen?

Grüße
theuserbl
 

André Uhres

Top Contributor
Ich benutze den CheckBoxTree von Santhosh und habe damit keine Probleme. Ich kann auch Häkchen programmatisch setzen und auslesen. In deinem Beispiel fällt auf, daß du ein neues CheckTreeSelectionModel erzeugst, statt das bestehende zu nutzen:
Java:
selectionModel = checkTreeManager.getSelectionModel();
 

theuserbl

Bekanntes Mitglied
Vielen herzlichen Danke. Jetzt gehts. :applaus:

Hatte gestern schon Stunden dadran gesesssen, um dahinter zu kommen.

Daß ich ein neues CheckTreeSelectionModel anlegte, das nichts mit dem existierenden CheckTreeManager zu tun hatte, gefiel mir auch nicht. Aber ich war froh, überhaupt ein CheckTreeSelectionModel zu haben.

Danke noch mal. :toll:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
torresbig Klasse mit extends Calendar über Methoden ändern (Hirnblockade) Allgemeine Java-Themen 7
B Liste ändern während Iteration über Diese? Allgemeine Java-Themen 16
N Fahrtrichtung eines selbstfahrenden Auto ändern Allgemeine Java-Themen 3
Z Java Testklassenvariable ändern im Hauptprogramm Allgemeine Java-Themen 5
L Uhrzeit von 24-Uhr zu 12-Uhr ändern Allgemeine Java-Themen 2
Thallius Zeitzone zu einem LocalDate hinzufügen aber ohne es zu ändern... Allgemeine Java-Themen 2
N Speicherort einer Datei im Explorer ändern Allgemeine Java-Themen 8
W Classpath Reflexion - Prüfen ob man auf ein Feld ändern kann Allgemeine Java-Themen 2
J Jasper Reports - Subreport zur Laufzeit ändern Allgemeine Java-Themen 6
N Variablen Array Länge ändern. Allgemeine Java-Themen 8
R Methoden Was fehlt mir bzw. muss ich bei der Methode countHarshabNumbers ändern damit ich die Harshad Zahlen im Intervall [51, 79] zählen kann? Allgemeine Java-Themen 19
R Was muss ich ändern, damit der Kreis links unten gezeichnet wird? Allgemeine Java-Themen 17
L Hintergrundfarbe jedes spinner-Elements ändern Allgemeine Java-Themen 1
Q Eclipse Escape Sequenzen Farbe ändern Allgemeine Java-Themen 4
OSchriever Einfach verkettete Liste ändern Allgemeine Java-Themen 43
D Boolean von ein anderem Java Programm während der Laufzeit ändern Allgemeine Java-Themen 23
D ArrayList Indexlänge ändern Allgemeine Java-Themen 2
E javax.mail sene Type ändern Allgemeine Java-Themen 2
J Farbe von Buttons mehrmals ändern Allgemeine Java-Themen 5
B Übernommene Variablen(werte) aus der Main-Klasse ändern? Allgemeine Java-Themen 9
B ImageView Farbe ändern Allgemeine Java-Themen 3
J Eine bestimmte Zahl im Integer ändern Allgemeine Java-Themen 9
T ändern neue Java Versionen was an der Programmiersprache? Allgemeine Java-Themen 15
R Zeitformat ändern Allgemeine Java-Themen 18
olfibits Erste Schritte Konsolentitel ändern Allgemeine Java-Themen 3
R Variable durch mehrere Methoden ändern und nutzen Allgemeine Java-Themen 17
S Kann man mit Java auf einem lokalen PC/Mac Benutzergruppen auslesen und Rechte ändern? Allgemeine Java-Themen 11
N Das Ende von bestimmten zeilen in text datei ändern und speichern Allgemeine Java-Themen 3
B Input/Output Datei ändern Allgemeine Java-Themen 9
T JasperReport Hintergrundfarbe wertabhängig ändern Allgemeine Java-Themen 3
sandaime CMD aufrufen und aktuellen pfad ändern Allgemeine Java-Themen 11
M Variable ändern bei jedem Schleifendurchlauf Allgemeine Java-Themen 32
RalleYTN DPI eines Bildes ändern Allgemeine Java-Themen 4
K eclipse Workspace ändern Allgemeine Java-Themen 2
J Properties file ändern Allgemeine Java-Themen 12
R WebDriver Firefox preferences ändern Allgemeine Java-Themen 0
W Input/Output Kann .properties Datei in kompilierter .jar nicht ändern Allgemeine Java-Themen 2
G Unix Passwort mit Java ändern? Allgemeine Java-Themen 3
M OOP Bildschirmauflösung des Systems ändern Allgemeine Java-Themen 0
Avarion Font von StyledDocument ändern Allgemeine Java-Themen 0
chuxXo System/JLayer Volume ändern Allgemeine Java-Themen 0
Thallius App-Sprache in der App ändern. Wo ist mein Denkfehler? Allgemeine Java-Themen 6
Tausendsassa Interface Buttons Background ändern! Wie?? Allgemeine Java-Themen 10
E Apache POI Powerpoint Verlinkungen ändern Allgemeine Java-Themen 4
R Int Wert im Dialogfeld ändern Allgemeine Java-Themen 4
Ananaskirsche Best Practice Sprachen ändern für Consolenausgaben Allgemeine Java-Themen 2
P Sprache ändern ins Programm einbinden Allgemeine Java-Themen 6
M String an einem abschnitt ändern Allgemeine Java-Themen 14
S Name einer Musikdatei auslesen und ändern Allgemeine Java-Themen 8
M Threads Bildformat mit java ändern Allgemeine Java-Themen 2
x22 Hintergrund in Netbeans ändern Allgemeine Java-Themen 3
M Zufälligen String generieren und alle 5 Minuten ändern Allgemeine Java-Themen 2
C Input/Output Bestimmte Zeile in Datei ändern. Allgemeine Java-Themen 13
B Swing Look And Feel ändern Allgemeine Java-Themen 15
jstei001 Reguläre Ausdrücke bearbeiten/ändern Allgemeine Java-Themen 14
H CLASSPATH im Javaprogramm ändern Allgemeine Java-Themen 5
S Datentypen Eine Variable von String zu Int ändern Allgemeine Java-Themen 5
B Input/Output Dateiendung ändern Allgemeine Java-Themen 6
P ganze Zeilen in einem File mit .replace() ändern. Allgemeine Java-Themen 10
Y Bildschirmauflösung ändern Allgemeine Java-Themen 5
P Wie bei log4j den Dateipfad der Logdatei zur Laufzeit ändern? Allgemeine Java-Themen 3
S Klassen .jar - eine .class datei ändern? Allgemeine Java-Themen 23
C Auf eine Methode von einer anderen Klasse aus ändern? Allgemeine Java-Themen 4
N .doc text ändern Allgemeine Java-Themen 12
X XML Dateien ändern Allgemeine Java-Themen 2
W LayoutManager Position der Componenten nachträglich ändern Allgemeine Java-Themen 12
A Ordnerberechtigungen ändern Allgemeine Java-Themen 10
Dit_ Registry, Preferences | Name des Knotens ändern. Allgemeine Java-Themen 2
R Windows - User Passwort ändern Allgemeine Java-Themen 2
S UML zur Laufzeit ändern Allgemeine Java-Themen 10
S equals - Identität ändern bei Vererbung? Allgemeine Java-Themen 5
S TreeSet - Comparator ändern -> resort? Allgemeine Java-Themen 8
E FF Einstellungen über Programm ändern? Allgemeine Java-Themen 7
M Grösse eines JTabbedPane ändern Allgemeine Java-Themen 2
L Kurzfristig Bildschirmauflösung ändern Allgemeine Java-Themen 2
Burny91 JAR-Datei Icon ändern Allgemeine Java-Themen 2
W Dateiinfo auslesen/ändern Allgemeine Java-Themen 3
S Tastaturbelegung global ändern Allgemeine Java-Themen 5
Q .jar wird mit cmd gestartet - Zuordnung von Dateitypen ändern (Windows 7) Allgemeine Java-Themen 7
H Erstelldatum einer Datei ändern. Allgemeine Java-Themen 3
K Ordnername ändern Allgemeine Java-Themen 2
Dissi Gammawerte des Grafiktreibers / System ändern? Allgemeine Java-Themen 3
E Objekt bei Serialisierung ändern Allgemeine Java-Themen 2
V Druckereigenschaften ändern? Allgemeine Java-Themen 17
G Jar File zur Laufzeit ändern. Allgemeine Java-Themen 4
C IP Adresse mit Java ändern? Allgemeine Java-Themen 9
A Ordnerrechte / Zugriffsrechte mit Java ändern? Allgemeine Java-Themen 10
M Dateinamen ändern Allgemeine Java-Themen 3
E *.class ändern/ersetzen/überschreiben. Allgemeine Java-Themen 9
J in einer static Variable Wert ändern Allgemeine Java-Themen 6
G HashMap key ändern Allgemeine Java-Themen 5
K JFreeChart Achsenbeschriftung ändern? Allgemeine Java-Themen 4
Luma Arbeitsverzeichnis innerhalb externen Bibliothek ändern Allgemeine Java-Themen 2
T (Binary)Datei einlesen, Inhalt ändern, Datei schreiben Allgemeine Java-Themen 4
D Zugriffsmethode nach Vererbung ändern? Allgemeine Java-Themen 5
A log4j 1.3 und ändern der log Konfiguration zur Laufzeit Allgemeine Java-Themen 4
E java.lang.outofmemory über windows-cmd ändern Allgemeine Java-Themen 6
1 Systemzeit ändern Allgemeine Java-Themen 6
timomeinen Access Modifier vor Kompilierung ändern Allgemeine Java-Themen 9
G Hintergrundbild ändern?` Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben