[java] Status van meerdere checkboxes uitlezen

Pagina: 1
Acties:

  • Skate2000
  • Registratie: November 1999
  • Laatst online: 29-12-2024
Goedendag, ik heb een relatief eenvoudig probleempje denk ik.
Ik heb een array van checkboxes, en ik wil iedere checkbox die true is gescheiden met een ";" in een string zetten.

Het probleem is alleen dat wanneer ik een checkbox aanvink, deze in de string wordt gezet, maar er wordt niet gekeken wat er nog meer aangevinkt was. Ik krijg dus maar één waarde tegelijk in m'n string. :'(

Dit hebbik tot nu toe:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public void itemStateChanged (ItemEvent event)
{   cbString = "";
    for (int z=0; z < cb.length; z++)
    {                       
        if (event.getSource() == cb[z])
        {   System.out.println(cb[z]);
            System.out.println(cb[z].getState());
            if (cb[z].getState() == true)
            {                   
                cbString = cbString + cb[z].getLabel() + ";";
            }
        }
    }
    
    System.out.println(cbString);
}

Iemand?

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Je moet dan elke statechanged alle checkboxen nalopen. Want nu maak je telkens als de state van een checbox veranderd een lege string aan en zet je de naam van die checkbox erin. Als je nu een lusje maakt die alle elementen in je array langsloopt en dan de naam van de checkbox erin zet moet het wel werken.

[edit]
O ik zie dat je dat al doet alleen je controleert telkens of het element het element is wat het event heeft veroorzaakt en hierdoor voeg je alleen die toe. Dus je moet die check alleen even weghalen.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Skate2000
  • Registratie: November 1999
  • Laatst online: 29-12-2024
Maar dat doet hij nu toch al? :? In de FOR loop loopt hij alles af, om te kijken wat de waarde is. Als hij TRUE is, zou hij (gescheiden met een ";") toegevoegd moeten worden aan de string. :)

Dit werkt nu alleen bij diegene die je aanklikt.. |:(

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Waarom wil jij een string hebben? Dit ga je toch niet gebruiken om ergens anders weer acties op te ondernemen?

ps: je moet een stringbuffer gebruiken ipv een string.

  • Skate2000
  • Registratie: November 1999
  • Laatst online: 29-12-2024
Hmz.. ja, ik moet iets weghalen, maar ik zie even niet wat...
Op maandag 17 juni 2002 12:53 schreef rwb het volgende:
Dus je moet die check alleen even weghalen.
:?

En dat van die string :) , dat zie ik zo wel weer, dat is van latere zorg. ;)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op maandag 17 juni 2002 13:01 schreef Skate2000 het volgende:
Hmz.. ja, ik moet iets weghalen, maar ik zie even niet wat...
[..]

:?
deze: if (event.getSource() == cb[z])

maar snap je eigelijk wel wat je doet?

  • Bobco
  • Registratie: Januari 2001
  • Laatst online: 30-10-2023

Bobco

I used to dream about Verona.

Maar je controleert nu elke keer of de event source gelijk is aan een bepaalde checkbox en alleen als dat zo is voeg je iets toe aan de string. Elke keer als deze method wordt aangeroepen wordt de string weer leeg geinitialiseerd en daarmee ben je meteen de vorige waarde kwijt.

Waarom niet gewoon waarde van de string buiten de method vasthouden en alleen elke keer de naam van de checkbox toevoegen?
code:
1
2
3
4
5
6
7
public class JouwClass {
   private StrinBuffer result = new StringBuffer();

   public void itemStateChanged(ItemEvent event) {
     result.append(event.getSource().getLabel() + ";");
   }
}

Misschien moet er nog een cast gedaan worden van het resultaat van event.getSource() maar deze constructie doet in ieder geval appends in plaats van overwrites.

With the light in our eyes, it's hard to see.


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Op maandag 17 juni 2002 13:09 schreef Bobco het volgende:
Maar je controleert nu elke keer of de event source gelijk is aan een bepaalde checkbox en alleen als dat zo is voeg je iets toe aan de string. Elke keer als deze method wordt aangeroepen wordt de string weer leeg geinitialiseerd en daarmee ben je meteen de vorige waarde kwijt.

Waarom niet gewoon waarde van de string buiten de method vasthouden en alleen elke keer de naam van de checkbox toevoegen?
code:
1
2
3
4
5
6
7
public class JouwClass {
   private StrinBuffer result = new StringBuffer();

   public void itemStateChanged(ItemEvent event) {
     result.append(event.getSource().getLabel() + ";");
   }
}

Misschien moet er nog een cast gedaan worden van het resultaat van event.getSource() maar deze constructie doet in ieder geval appends in plaats van overwrites.
Dat zou inderdaad ook kunnen het enige nadeel daarvan is dat je als je een checkbox uitzet dat je dan het stukje weer in de string op moet zoeken en moet verwijderen. anders kunnen er ook boxjes instaan die niet ge-checked zijn

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Skate2000
  • Registratie: November 1999
  • Laatst online: 29-12-2024
Op maandag 17 juni 2002 13:02 schreef Alarmnummer het volgende:


deze: if (event.getSource() == cb[z])

maar snap je eigelijk wel wat je doet?
|:( Stom, ik ben hier al veel te lang mee bezig, ik zagget over het hoofd, thnx everybody!!! :) :D 8-)

  • Bobco
  • Registratie: Januari 2001
  • Laatst online: 30-10-2023

Bobco

I used to dream about Verona.

Op maandag 17 juni 2002 14:23 schreef rwb het volgende:

[..]

Dat zou inderdaad ook kunnen het enige nadeel daarvan is dat je als je een checkbox uitzet dat je dan het stukje weer in de string op moet zoeken en moet verwijderen. anders kunnen er ook boxjes instaan die niet ge-checked zijn
Je hebt gelijk, ik had de helft gelezen en toen dacht ik het te weten, niet ongebruikelijk voor mij ;) Overigens heeft de geachte topicstarter nog niet aangegeven waar 'ie die lijst nu voor nodig heeft...

With the light in our eyes, it's hard to see.

Pagina: 1