Code
private BigInteger status = new BigInteger("111000111", 2);
private static final int BIT_LENGTH = 50;
//...
for (int i = 0; i < BIT_LENGTH; i++) {
BigInteger l = BigInteger.ONE.shiftLeft(i);
JCheckBox c = new JCheckBox(Integer.toString(i + 1));
c.addActionListener(e -> {
JCheckBox cb = (JCheckBox) e.getSource();
BigInteger newValue = cb.isSelected() ? status.or(l) : status.xor(l);
undoSupport.postEdit(new StatusEdit(status, newValue));
status = newValue;
label.setText(print(status));
});
c.setSelected(!status.and(l).equals(BigInteger.ZERO));
p.add(c);
}
References