Announcement

Collapse
No announcement yet.

Abfrage von "dynamisch angelegten" JCheckBox(es)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Abfrage von "dynamisch angelegten" JCheckBox(es)

    sooo... jetzt bin ich also an die Grenzen meiner Bücher gestoßen :

    Folgendes :
    CheckBox(es) wurden über eine <String>Liste, deren Länge veränderlich sein kann, über eine Schleife erzeugt. In der Art von



    JPanel füllMich = new JPanel();
    ArrayList<String> liste = new ArrayList<String>();

    *** hier wird liste mit Inhalt versehen *****

    for(int i=0; i<liste.size; i++){
    füllMich.add( new JCheckBox(liste.get[i]); // hier werden CheckBox(es)
    // erzeugt und mit Strings belegt
    }
    JScrollPane rollMich = new JScrollPane(füllMich);


    Wie komme ich jetzt wieder an meine CheckBox(es) bzw. deren Inhalt?
    Schließlich will ich ja auswerten, welche selektiert worden sind. Ich kann zwar die Anzahl der Inhalte des JPanels ermitteln, aber ich komme einfach nicht an den ürsprünglichen Datentyp um ihn auszuwerten.

    Ein Cast funzt leider nicht .
    Auch nicht über den Umweg über <Object> was sonst überall geht ....

    Bitte seid so gut und greift einem Programmier-"Legastheniker" ein wenig unter die Objekte ;

  • #2
    Hallo Drosera,

    Du kannst bei der Erzeugung in der Schleife zum Beispiel direkt auch einen ActionListener setzen (addActionListener(ActionListener)). Dieser reagiert auf das Aktivieren/Deaktivieren der CheckBox. Setzt Du in der Schleife auch einen ActionCommand, kannst Du diesen dann im ActionListener wieder abfragen und weißt dann, was für eine CheckBox das gerade war.

    Außerdem könntest Du die produzierten CheckBox-Objekte ebenfalls in einer Liste halten. Über diese könntest Du zu einem beliebigen Zeitpunkt iterieren und den Zustand jeder einzelnen CheckBox abfragen.

    In der Hoffnung, geholfen zu haben,
    Stefan

    Comment


    • #3
      Die Lösung ist leider nicht so ganz passend

      Vorab : Vielen Dank Stefan für die Anwort !
      Ja, ich gestehe es, ich bin Rollenspieler , aber das ist ja hoffentlich kein Hinderungsgrund hier im Forum (hoffe ich...)

      So sieht das Teil eigentlich aus :




      Das ist der "entscheidende" Quelltext

      //************************************************
      //********* Checkboxen mit Klassenfertigkeiten in Panel laden
      //************************************************
      private void erzeugenAuswahlKlassenFertigkeiten(String CharKlasse){
      ArrayList<String> liste = new ArrayList<String>();
      frame.remove(CharakterBogen.this.klassenFertigkeit enPanel);
      frame.remove(CharakterBogen.this.laufLeisteKlassen Fertigkeiten);
      this.klassenFertigkeitenPanel = new JPanel(new GridLayout(0,1));
      String pathToFile = "charFertigkeiten//"+CharKlasse+" Fertigkeiten.csv";
      liste.clear();
      /* Füllen der ARRAYLIST */
      liste = auslesenTabelle.fileAuslesen(pathToFile);

      for(int i = 0; i<liste.size(); i++){
      /* Füllen des JPanels */
      this.klassenFertigkeitenPanel.add( new JCheckBox(liste.get(i)) );
      }
      /* Grafische Einbindung Panel in ScrollPane */
      this.laufLeisteKlassenFertigkeiten = new JScrollPane(this.klassenFertigkeitenPanel);

      /* Wo soll das ScrollPane erscheinen ?! */
      this.laufLeisteKlassenFertigkeiten.setBounds((zwis chenraum+250), (y1/2), panelBreite, ((y1/2)-40));
      /* zufügen ScrollPane */
      frame.add(this.laufLeisteKlassenFertigkeiten);
      this.klassenFertigkeitenPanel.setBounds(/*blah*/); this.laufLeisteKlassenFertigkeiten.repaint(/*nur neuzeichnen*/);
      this.erzeugenAuswahlRestFertigkeiten(CharKlasse);
      }


      Ich habe also die CheckBoxes in einer ArrayList, nutzt mir aber nichts, da ich die CheckBoxes in einem Panel stehen habe und nur dort deren aktuellen Status abfragen kann, oder täusche ich mich da?

      Comment


      • #4
        Problem gelöst...

        Für alle, die ähnlich beklop.. also für alle die einen ähnlichen IQ haben wie ich:

        Ein Cast wird immernoch in runde also () Klammern gesetzt..
        (und nicht in spitze <> )

        Dann sieht das so aus :
        for(int i=0; i< füllMich.getComponentCount(); i++){
        JCheckBox box = (JCheckBox) füllMich.getComponent(i);
        if(box.isSelected()) tue dies (oder das);
        }

        ta daaaa..... (*heftigst mit dem Kopf gegen die Wand hämmert*)

        Comment

        Working...
        X