private int var = 0;
test(){
ActionListener actionListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
String selection = (String) items.getSelectedItem();
for (int i = 0; i < itms.length; i++) {
if (selection == itms[i]) {
var = 10 + i;
System.out.println(var); // prints the desired value
}
}
}
};
System.out.println(var); // prints 0 but why not desired value???
}
此actionListener用于组合框。我想获取组合框中所选项的值,并将其提供给另一个actionListener,它将根据选择的JButton从原始actionListener向var追加一个新值。如何从此actionListener中获取var的值,并将其用于同一构造函数中的另一个actionListener中?这甚至可能吗?有更好的方法吗?
答案 0 :(得分:1)
您的actionPerformed()
方法将在事件发生时执行,但在actionPerformed()
之外的print语句不是这样。
所以这句话
System.out.println(var); // prints 0 but why not desired value???
每次创建test
类的对象时都会执行(根据Java命名约定,最好将其命名为 Test
类),因为print语句已写入在构造函数内部。相反,只要事件发生,actionPerformed
方法中的print语句就会被执行并打印出正确的值,即你所需的“期望值”。