Originariamente inviato da Wolvy23
Grazie Lele, sempre gentilissimo....
non ho capito però quale parte del mio codice devo sostituire
con il tuo!!
Come vedi ho creato una classe che estende ButtonGroup e ne ridefinisce un metodo.
Tu invece hai esteso JCheckBox in modo che ciascuna JCheckBox prenda l'elenco di quelle a lei incompatibili... la classe che ho scritto io ti semplifica di molto la vita. Qui un esempio dove creo 10 checkbox e le prime 3 sono "incompatibili":
codice:
import java.awt.*;
import javax.swing.*;
public class Check extends JFrame {
private class MioButtonGroup extends ButtonGroup {
@Override
public void setSelected(ButtonModel m, boolean b) {
super.setSelected(m, b);
if ( !b ) {
clearSelection();
}
}
}
private JCheckBox[] chkBoxes;
private MioButtonGroup gruppo;
public Check() {
Container c = getContentPane();
c.setLayout( new BorderLayout() );
JPanel jp = new JPanel();
BoxLayout bLay = new BoxLayout(jp, BoxLayout.Y_AXIS);
jp.setLayout( bLay );
chkBoxes = new JCheckBox[10];
for(int i=0; i<10; i++) {
chkBoxes[i] = new JCheckBox("Selezione numero " + i);
jp.add( chkBoxes[i] );
}
// Le prime 3 sono "incompatibili"... le inserisco nel gruppo
gruppo = new MioButtonGroup();
for(int i=0; i<3; i++) {
gruppo.add( chkBoxes[i] );
}
c.add(jp, BorderLayout.CENTER);
setTitle("CheckBoxes come RadioButton");
setSize(300, 400);
setDefaultCloseOperation( EXIT_ON_CLOSE );
setLocationRelativeTo( null );
setVisible( true );
}
public static void main(String[] args) {
Check c = new Check();
}
}
Ciao.