【发布时间】:2015-03-29 04:50:37
【问题描述】:
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,该 actionListener 将根据选择的 JButton 将新值附加到原始 actionListener 的 var 中。如何从这个 actionListener 中获取 var 的值,并在另一个同样在同一个构造函数中的 actionListener 中使用它?这甚至可能吗?有更好的方法吗?
【问题讨论】:
-
据我所见,第二个打印语句在创建侦听器后立即被调用。至于侦听器中的代码,直到事件实际发生时才会执行。
0会先打印吗? -
当您的 var 是
int时,将另一个值附加到 var 是什么意思?int只包含一个值。您不能向其附加其他值。 -
@VinceEmigh yes 0 首先打印,直到我在组合框中进行选择。
-
@ajb 我会将它们转换为字符串,然后附加它们以生成更长的“整数”值。
标签: java scope jbutton actionlistener jcombobox