Avatar billede tummas Nybegynder
12. august 2002 - 08:47 Der er 8 kommentarer og
1 løsning

Reg af mange elementer på et panel

Jeg har et JPanel der består af 120-150 Jcheckboxe(). hvis man som sædvanligt opretter en itemListener for hvert objekt, er det en hulens masse Listener/tråde der kører samtidigt.
Når jeg så desuden har 5 paneler mere, bryder maskinen sammen.

FORSLAG SØGES....
Avatar billede tummas Nybegynder
12. august 2002 - 08:49 #1
checkBoxene er oprettet som et array:

JcheckBox cbox[];

loop{
cbox[i] = new JcheckBox();
}
Avatar billede carstenknudsen Nybegynder
12. august 2002 - 09:07 #2
Du bruger normalt dine checkbox'e på to måder.
Enten skal du notificeres hvis nogle af
dem bliver aktiveret/deaktiveret. I så
fald har du brug for en listener, men du
kan nøjes med en enkelt listener, idet
man med getSource (fra event'en) får den
checkbox der har genereret event'en. Du
skal så sørge for at listeneren har adgang
til din cbox array, så den kan undersøge hvilken
checkbox der genererede event'en. Hvis du
bare skal aflæse værdien på et tidspunkt,
er der slet ingen grund til at have en
listener.
Avatar billede tummas Nybegynder
12. august 2002 - 12:44 #3
Hvor skal så listeneren påklistres
Avatar billede carstenknudsen Nybegynder
12. august 2002 - 12:50 #4
I sidstnævnte tilfælde skal den ikke påklistres,
i det andet tilfælde kan det gøre ved konstruktion.
Du har ikke skrevet hvilken type listener,
så her er et eksempel med en ActionListener.
JCheckBox cbox[] = ...;
ActionListener listener = new Listener( cbox );
for (int i = 0; i < cbox.length; i++) {
    cbox[i].addActionListener( listener );   
}
private static class Listener implements ActionListener {
    private JCheckBox[] cbox;
    public Listener( JCheckBox[] cbox ) {
    this.cbox = cbox;
    }
    public void actionPerformed( ActionEvent ae ) {
        for (int i = 0; i < cbox.length; i++) {
            if ( cbox[i].equals( ae.getSource() ) ) {
                //her skal der ske noget
            }
        }
    }
}
Avatar billede tummas Nybegynder
12. august 2002 - 12:56 #5
Har brug for kun en action listener.
Avatar billede carstenknudsen Nybegynder
12. august 2002 - 13:05 #6
Der er kun en i koden ovenfor. Den bliver
bare registreret mange gange.
Eller mener du noget andet?
Avatar billede tummas Nybegynder
12. august 2002 - 13:09 #7
laver ovenstående kun en tråd,
hvis er alt OK
Avatar billede carstenknudsen Nybegynder
12. august 2002 - 13:13 #8
Ovenstående laver ingen tråd overhovedet.
Der findes en awt tråd der sørger for
at servicere alle gui aspekter. Der bliver
ikke lavet en tråd per actionlistener.
Avatar billede tummas Nybegynder
12. august 2002 - 13:17 #9
Okay

Tak, mange tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester