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

标签 java swing togglebutton

我有一个切换按钮,我将其状态设置如下

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

当我设置状态时调用第一个方法的问题。什么都没发生。但是,只需将鼠标悬停在按钮上,它就会更新以显示正确的文本。我设置了一个断点,我注意到当我将鼠标悬停在按钮上时,该事件就会触发。当选择设置或鼠标单击而不是悬停时不应该如此)

谢谢

最佳答案

使用 Action 监听器:

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

关于Java 切换按钮事件在选择完成时不会触发,但在鼠标悬停时触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37319268/

相关文章:

java - 如何从 2Dimentions arrayList 添加和获取元素

Java 虚函数调用

java - 在构造函数中创建防御副本的正确方法是什么

java - JPanel 中的 PaintComponent 未被调用

javascript - 引用错误: toggle is not defined

java - 实例是否应该使用 setter/getter 来访问它们自己的私有(private)数据成员?

java - 2个jpanel但不知道如何控制它们

java - 如何旋转Swing文本?

WPF ToggleButton.IsChecked 绑定(bind)不起作用

javascript - JQuery:根据条款是否同意切换提交按钮