2016-05-19 3 views
0

У меня есть кнопка переключения и я установил свое состояние следующим образомJava кнопка переключения событие не срабатывает, когда выбор делается, но срабатывает, когда мышь завис

public void setSizeFeet(boolean enabled) { 
     this.size_tb.setSelected(enabled); 

    } 

У меня есть слушатель

size_tb.addChangeListener(new javax.swing.event.ChangeListener() { 
     public void stateChanged(javax.swing.event.ChangeEvent evt) { 
      size_tbStateChanged(evt); 
     } 
    }); 
private void size_tbStateChanged(javax.swing.event.ChangeEvent evt) {          
    if (size_tb.isSelected()){ 
      size_tb.setText("Feet"); 
     } else { 
      size_tb.setText("Meters"); 
     } 
}  

Проблема в том, когда я устанавливаю состояние, вызывающее первый метод. Ничего не произошло. Однако, просто наведя курсор мыши на кнопку, он обновляется, чтобы показать правильный текст. Я поставил точку прерывания, и я заметил, что событие просто срабатывает, когда я наводил указатель мыши на кнопку. Если не это, когда выбор установлен, или когда мышь не парить)

Благодарности

+0

Как это возможно? звучит странно. кнопка переключения должна быть у слушателя мыши для этого. – ziLk

+0

'ChangeListener 'уведомляется при изменении внутренней модели. Когда вы наводите кнопку, свойство его опрокидывания изменяется, поэтому вы получаете событие. –

ответ

3

Использование ActionListener:

new JToggleButton().addActionListener(new ActionListener() { 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     JToggleButton tBtn = (JToggleButton)e.getSource(); 
     if (tBtn.isSelected()) { 
      System.out.println("button selected"); 
     } else { 
      System.out.println("button not selected"); 
     }   
    } 
}); 

В качестве альтернативы вы можете использовать ItemListener:

ItemListener itemListener = new ItemListener() { 
    public void itemStateChanged(ItemEvent itemEvent) { 
    int state = itemEvent.getStateChange(); 
    if (state == ItemEvent.SELECTED) { 
     System.out.println("Selected"); 
    } else { 
     System.out.println("Deselected"); 
    } 
    } 
}; 
+0

Я пробовал это, событие генерируется, когда вы нажимаете кнопку не тогда, когда вы делаете setSelected – Snake

+0

@Snake Вы пробовали ItemListener? – tak3shi

+0

Я не пробовал это. Спасибо. Я приму это, если не найдено иначе :) – Snake

Смежные вопросы