java - JCheckBoxes not being disabled after I setEnable(false) them -
if have 30 checkboxes , don't want more 6 of them checked. have int keeping track of how many checked. each box has item listener calls method see int at, , if reaches 6, method calls setenabled(false) on each box. however, after int number_of_boxes_checked reaches 6 boxes don't disabled.
import java.awt.borderlayout; import java.awt.eventqueue; import javax.swing.jframe; import javax.swing.jpanel; import javax.swing.border.emptyborder; import javax.swing.jcheckbox; import java.awt.gridlayout; import javax.swing.event.changelistener; import javax.swing.event.changeevent; import java.awt.event.itemlistener; import java.awt.event.itemevent; import javax.swing.jlabel; public class jlottery2 extends jframe { private jpanel contentpane; int number_of_boxes_checked = 1; jcheckbox[] checkbox = new jcheckbox[30]; jlabel label = new jlabel("0"); /** * launch application. */ public static void main(string[] args) { eventqueue.invokelater(new runnable() { public void run() { try { jlottery2 frame = new jlottery2(); frame.setvisible(true); } catch (exception e) { e.printstacktrace(); } } }); } /** * create frame. */ public jlottery2() { setdefaultcloseoperation(jframe.exit_on_close); setbounds(100, 100, 586, 360); contentpane = new jpanel(); contentpane.setborder(new emptyborder(5, 5, 5, 5)); setcontentpane(contentpane); contentpane.setlayout(null); jpanel panel = new jpanel(); panel.setbounds(10, 11, 321, 299); contentpane.add(panel); panel.setlayout(new gridlayout(5, 6, 0, 0)); jpanel panel_1 = new jpanel(); panel_1.setbounds(330, 11, 230, 299); contentpane.add(panel_1); panel_1.add(label); (int = 0; < 30; ++i) { checkbox[i] = new jcheckbox(integer.tostring(i + 1)); panel.add(checkbox[i]); } (int = 0; < 30; ++i) { checkbox[i].additemlistener(new itemlistener() { public void itemstatechanged(itemevent e) { limit_checkboxes(); } }); } } public void limit_checkboxes() { label.settext(integer.tostring(number_of_boxes_checked)); if (number_of_boxes_checked > 6) { (int = 0; > 30; ++i) { checkbox[i].setenabled(false); } } else { ++number_of_boxes_checked; } } }
in limit_checkboxes()
method, want i < 30
, not i > 30
in loop. see embedded comment.
label.settext(integer.tostring(number_of_boxes_checked)); if (number_of_boxes_checked > 6) { (int = 0; < 30; ++i) { //<- bug here, fixed checkbox[i].setenabled(false); } } else { ++number_of_boxes_checked; }
Comments
Post a Comment