我得到了 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/