![](/img/trans.png)
[英]How to access variable from action listener/class constructor to use in main method in java
[英]How to access a variable defined in a Listener from the main class?
我的MyFrame
类中的变量有问题。 我想在MyFrame
类中具有在组合框侦听器中定义的变量的值。
这是我的情况:我有一个带有一些朋友名字的组合框。 我已将一个侦听器放入组合框,该组合框必须返回所选朋友的姓氏。 我要插入的价值surname
在命令MyFrame
类,但也存在一些问题:一旦设置好的surname
作为final
(因为它在监听中使用),我有说,一个错误:
The final local variable surname cannot be assigned, since it is defined in an enclosing type
。
到底是什么? 我在这里发布我的代码:
public class MyFrame extends {
public static void main (String[] args)
{
//other
String [] names = {"john","al","jack"};
final String surname=null;
JLabel nameLbl = new JLabel("surname: " + surname);
JComboBox box = new JComboBox(names);
JPanel centralPnl = new JPanel();
centralPnl.add(nameLbl);
centralPnl.add(box);
box.addItemListener(new ItemListener()
{
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED)
{
// Here operations from database
//that return friends' surname under the variable name of "result"
surname = result;
}
}
});
}
}
您正在尝试重新分配final
变量,这就是问题所在。 同样,您的final
变量也需要首先进行初始化。
有两件事情第一个是final
变量必须当它宣布被初始化和final
变量不能被重新分配的值。
不幸的是,您同时犯了两个错误。
另一个问题是您应该发布一个有效的代码。 它将使其他人容易发现问题。
除了已经指出的代码问题之外,我想问题是您是否需要存储姓氏还是只是使用它来更新标签?
如果需要存储数据,请将您的姓氏变量移到类级别。
如果您只是更新标签,请执行以下操作
nameLbl.setText("surname: " + result);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.