ciao a tutti!!
per un programma ho bisogno di creare un numero casuale da 0 a 26.
a ogni numero corrisponde una chiave per un' hashtable e a ogni chiave corrisponde un checkbox.
Io voglio dire al programma di generare un numero casuale e di controllare se il checkbox a cui corrisponde è già spuntato:
se è spuntato il programma dovrà generarne un'altro e ricontrollare;
se non è spuntato il programma dovrà spuntarlo...
io per ora ho scritto così:
dove estratto è una variabile di tipo Int, rand è il random e hashtable é l' Hashtable.codice:do{ estratto = rand.nextInt(26); } while ( ((JCheckBox)hashtable.get(estratto)).isSelected() == true );
eseguendo il programma le prime volte che premo il pulsante (che entra quindi nel do) va tutto bene e spunta i checkbox giusti, poi inizia a darmi questo problema: (la riga 308 è quella dove è scritto "while")
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at numeri_casuai.Numeri_casuali$2.actionPerformed(Num eri_casuali.java:308)
at javax.swing.AbstractButton.fireActionPerformed(Unk nown Source)
at javax.swing.AbstractButton$Handler.actionPerformed (Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed (Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent( Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(U nknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unkno wn Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPri vilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPri vilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPri vilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilter s(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(U nknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarch y(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
credo che venga quando il checkbox è già spuntato, ma non saprei....
qualcuno mi potrebbe dire perchè mi viene per favoree??