12. august 2002 - 08:47Der 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.
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
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.
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 } } } }
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.
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.