g.addItemListener(new JCheckboxListener());
 g_1.addItemListener(new JCheckboxListener());
 g_2.addItemListener(new JCheckboxListener());
 g_3.addItemListener(new JCheckboxListener());
这样写事件
class JCheckboxListener implements ItemListener {
  public void itemStateChanged(ItemEvent e) {
                                     if (g.isSelected()) {/*   button事件 */}
                                     if (g_1.isSelected()) { /*button事件 */}
                                     if (g_2.isSelected()) {/*button事件*/ }
                                     if (g_3.isSelected()) {/*button事件*/ }
}
//为什么我只要把他们选中一次 即使下次把选中的取消了 那些button事件还在 很是疑惑 高人回答 

解决方案 »

  1.   

    这个应该是逻辑的问题吧。你的那些button事件相同吗?还有就是if之后的默认处理else也加上试试
      

  2.   

      private void AddactionListener(){
         g.addItemListener(new JCheckboxListener());
    g_1.addItemListener(new JCheckboxListener());
    g_2.addItemListener(new JCheckboxListener());
    g_3.addItemListener(new JCheckboxListener());
    gatesensor.addActionListener(new ActionListener(){ @Override
    public void actionPerformed(ActionEvent arg0) {
    // TODO Auto-generated method stub
    if(gatesensor.isSelected()){
    isnotify = true;
    sensorTriggered("The Sensor Statement: ON");
    }
    else{
    isnotify = false;
    sensorTriggered("The Sensor Statement: OFF");
    }
    }

    });

    } class JCheckboxListener implements ItemListener {
    public void itemStateChanged(ItemEvent e) {
    if (g.isSelected()) {
    on.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    if (!G1.isLockStatement()) {
    G1.setLockStatement(true);
    G1.setDoorStatement(false);
    lab.setText("Statement:[locked &  closed ]");
    } else {
    JOptionPane.showMessageDialog(null,
    "THE GARAGE GATE IS LOCKED !");
    }
    }
    });
    off.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    if (G1.isLockStatement()) {
    G1.setLockStatement(false);
    G1.setDoorStatement(true);
    lab.setText("Statement:[unlocked &  opened ]");
    } else {
    JOptionPane.showMessageDialog(null,
    "THE GARAGE GATE IS UNLOCKED !");
    }
    }
    });
    open.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    if (G1.isDoorStatement()) { JOptionPane.showMessageDialog(null,
    "THE GARAGE GATE IS OPENED!!"); } else {
    if (G1.isLockStatement()) {
    JOptionPane
    .showMessageDialog(null,
    "when you open the gate, unlocked frist!");
    } else {
    G1.setLockStatement(false);
    G1.setDoorStatement(true);
    lab.setText("Statement:[unlocked &  opened ]");
    }
    }
    } });
    close.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    if (!G1.isDoorStatement()) {
    JOptionPane.showMessageDialog(null,
    "THE GARAGE GATE IS CLOSED !!"); } else {
    G1.setDoorStatement(true);
    G1.setLockStatement(false);
    lab.setText("Statement:[locked &  closed ]");
    }
    }
    } );
    }
    if (g_1.isSelected()) {
    on.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    if (!G2.isLockStatement()) {
    if(G2.isDoorStatement()){
    JOptionPane.showMessageDialog(null,
    "when locked the door , frist close the door!");
    }
    else{
    G2.setLockStatement(true);
    lab_1.setText("Statement:[locked &  closed ]");
    }
    } else {
    JOptionPane.showMessageDialog(null,
    "THE GATE one IS LOCKED !");
    }
    }
    });
    off.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    if (G2.isLockStatement()) {
    G2.setLockStatement(false);
    lab_1.setText("Statement:[unlocked &  closed ]");
    } else {
    JOptionPane.showMessageDialog(null,
    "THE GATE one IS UNLOCKED !");
    }
    }
    });
    open.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    if (G2.isDoorStatement()) { JOptionPane.showMessageDialog(null,
    "THE GATE one IS OPENED !!"); } else {
    if (G2.isLockStatement()) {
    JOptionPane
    .showMessageDialog(null,
    "when you open the door , unlocked frist!");
    } else {
    G2.setDoorStatement(true);
    lab_1.setText("Statement:[unlocked &  opened ]");
    }
    }
    } });
    close.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    if (!G2.isDoorStatement()) {
    JOptionPane.showMessageDialog(null,
    "THE GATE one IS CLOSED !!"); } else {
    G2.setDoorStatement(false);
    lab_1.setText("Statement:[unlocked &  closed ]");
    }
    }
    } );
    }
    if (g_2.isSelected()) {
    on.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    if (!G3.isLockStatement()) {
    if(G3.isDoorStatement()){
    JOptionPane.showMessageDialog(null,
    "when locked the door , frist close the door!");
    }
    else{
    G3.setLockStatement(true);
    lab_2.setText("Statement:[locked &  closed ]");
    }
    } else {
    JOptionPane.showMessageDialog(null,
    "THE GATE two IS LOCKED !");
    }
    }
    });
    off.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    if (G3.isLockStatement()) {
    G3.setLockStatement(false);
    lab_2.setText("Statement:[unlocked &  closed ]");
    } else {
    JOptionPane.showMessageDialog(null,
    "THE GATE two IS UNLOCKED !");
    }
    }
    });
    open.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    if (G3.isDoorStatement()) { JOptionPane.showMessageDialog(null,
    "THE GATE two IS OPENED !!"); } else {
    if (G3.isLockStatement()) {
    JOptionPane
    .showMessageDialog(null,
    "when you open the door , unlocked frist!");
    } else {
    G3.setDoorStatement(true);
    lab_2.setText("Statement:[unlocked &  opened ]");
    }
    }
    } });
    close.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    if (!G3.isDoorStatement()) {
    JOptionPane.showMessageDialog(null,
    "THE two GATE IS CLOSED!"); } else {
    G3.setDoorStatement(false);
    lab_2.setText("Statement:[unlocked &  closed ]");
    }
    }
    } );
    }
    if (g_3.isSelected()) {
    on.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    if (!G4.isLockStatement()) {
    if(G4.isDoorStatement()){
    JOptionPane.showMessageDialog(null,
    "when locked the door ,frist close the door!");
    }
    else{
    G4.setLockStatement(true);
    lab_3.setText("Statement:[locked &  closed ]");
    }
    } else {
    JOptionPane.showMessageDialog(null,
    "THE GATE three IS LOCKED !");
    }
    }
    });
    off.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    if (G4.isLockStatement()) {
    G4.setLockStatement(false);
    lab_3.setText("Statement:[unlocked &  closed ]");
    } else {
    JOptionPane.showMessageDialog(null,
    "THE GATE three IS UNLOCKED !");
    }
    }
    });
    open.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    if (G4.isDoorStatement()) { JOptionPane.showMessageDialog(null,
    "THE GATE three IS OPENED!"); } else {
    if (G4.isLockStatement()) {
    JOptionPane
    .showMessageDialog(null,
    "when you open the door , unlocked frist!");
    } else {
    G4.setDoorStatement(true);
    lab_3.setText("Statement:[unlocked &  opened ]");
    }
    }
    } });
    close.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    if (!G4.isDoorStatement()) {
    JOptionPane.showMessageDialog(null,
    "THE GATE three IS CLOSED!"); } else {
    G4.setDoorStatement(false);
    lab_3.setText("Statement:[unlocked &  closed ]");
    }
    }
    } );
    }
    else{
    return;
    }
    }
    }
    @Override
    public void sensorTriggered(String message) {
    // TODO Auto-generated method stub
    if(isnotify){
    lab_5.setForeground(Color.RED);
    JOptionPane.showMessageDialog(null,
    "Sensor Start runing!");
    }
    else{
    lab_5.setForeground(Color.YELLOW);
    JOptionPane.showMessageDialog(null,
    "Sensor end runing!");
    }
    lab_5.setText(message);

    }
    }
    //第一次选取都正常 但是选取一次后就不正常了  好