我点了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);
}
}
}
但是一个无法解决的问题。我怎样才能以其他方式实现这一目标?
答案 0 :(得分:3)
您应该将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();