简体   繁体   English

选择完成后不触发Java切换按钮事件,但将鼠标悬停时触发

[英]Java toggle button event not fired when selection is done but fired when mouse hovered

I have a toggle button and I set its state as follows 我有一个切换按钮,其状态设置如下

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

   } 

I have listener 我有听众

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");
        }
}    

The problem that when I set the state calling the first method. 我在设置状态时调用第一个方法的问题。 Nothing happens. 什么都没发生。 However, by just hovering the mouse over the button then it updates to show the correct text. 但是,只需将鼠标悬停在按钮上,它就会更新以显示正确的文本。 I put a break a point and I noticed the event just fires when I hover the mouse over the button. 我稍稍休息了一下,发现将鼠标悬停在按钮上方时,事件立即触发。 Shouldn't it when the selection is set or when it is mouse click not hover) 当设置了选择或鼠标单击时,不应该将其悬停)

Thanks 谢谢

Use ActionListener: 使用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");
        }        
  }
});

Alternatively you can use the ItemListener: 或者,您可以使用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");
    }
  }
};

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM