import java.awt.BorderLayout;import javax.swing.*;public class T { public static void main(String[] args) { JCheckBox cb1 = new JCheckBox("Test1"); ButtonGroup bg = new ButtonGroup(); bg.add(cb1);
JCheckBox cb2 = new JCheckBox("Test2"); cb2.setModel(new JToggleButton.ToggleButtonModel() { public void setSelected(boolean b) { if (b) super.setSelected(b); } });
JPanel p = new JPanel(); p.add(cb1); p.add(cb2);
JFrame f = new JFrame(); f.getContentPane().add(p, BorderLayout.CENTER); f.pack(); f.setLocationRelativeTo(null); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
{
public static void main(String[] args)
{
JCheckBox cb1 = new JCheckBox("Test1");
ButtonGroup bg = new ButtonGroup();
bg.add(cb1);
JCheckBox cb2 = new JCheckBox("Test2");
cb2.setModel(new JToggleButton.ToggleButtonModel() {
public void setSelected(boolean b)
{
if (b)
super.setSelected(b);
}
});
JPanel p = new JPanel();
p.add(cb1);
p.add(cb2);
JFrame f = new JFrame();
f.getContentPane().add(p, BorderLayout.CENTER);
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
在初始化时设置分别为“选中”和“未选中”
都是“点亮”的和“不能重新选择”,怎么做呀?
有没有除“正常选中和未选中之后,在其上贴一个透明panel”的非变态方法?
public static void main(String[] args) {
JCheckBox cb1 = new JCheckBox("Test1");
JCheckBox cb2 = new JCheckBox("Test2");
cb1.setModel(new UnChangeableCheckBoxModel(true));
cb2.setModel(new UnChangeableCheckBoxModel(false)); JPanel p = new JPanel();
p.add(cb1);
p.add(cb2); JFrame f = new JFrame();
f.getContentPane().add(p, BorderLayout.CENTER);
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}class UnChangeableCheckBoxModel extends JToggleButton.ToggleButtonModel
{
private boolean selected;
public UnChangeableCheckBoxModel(boolean selected) {
this.selected = selected;
setSelected(selected);
}
public void setSelected(boolean b) {
if (b == selected) {
super.setSelected(b);
}
}
}