java - 在 stateChanged() 中调用函数

标签 java listener

我得到了 A 类,点击按钮后:

if (source == buttonA){          
new classB(this);
}

此外,A类有一个名为

的函数
function(int a);

在B类我有

public class classB extends JFrame implements ChangeListener {    

    public classB(A a) {
        public void stateChanged(ChangeEvent e){            
           JSlider source = (JSlider)e.getSource();
           tmp = source.getValue();                             
           a.function(tmp);         
        }
    }
}

但是a无法解析。我怎样才能以其他方式实现这一目标?

最佳答案

您应该将 classB 更改为:

  public class classB extends JFrame implements ChangeListener {
    private A a;

    public classB(A a) {
      this.a = a;
    }

    public void stateChanged(ChangeEvent e) {
      JSlider source = (JSlider)e.getSource();
      int tmp = source.getValue();
      a.function(tmp);
    }
  }

解释

这个类有几个问题。首先是构造函数中嵌套的 stateChanged 函数。去掉这个,意味着 classB 需要一个对类 A 的引用,这就是为什么它需要一个 private A a; 字段,并且需要是在构造函数中设置。此外,变量 tmp 未声明,请始终在使用前声明一个变量。

使用这个也可以:

int tmp;                    //<-- variable declared, you can now assign a value to it.
tmp = source.getValue();

关于java - 在 stateChanged() 中调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26344811/

相关文章:

java - Java 中的 addPropertyChangeListener 方法

Java 400 错误但在浏览器中打开

java - Picasso IllegalArgumentException 目标不能为空 : Retrieve data from Firebase

java - 删除不同对象中相同方法的重复代码

Java swing下拉选择监听器

java - Java 中基本监听器行为的问题

java - 通过属性选择不同的嵌入对象

java - 在数独中寻找零

android - 回收站 View : callback for view when fully visible

network-programming - 端口监听到底是什么