我的 MyFrame
类中的变量有问题。我想在 MyFrame
类中拥有在组合框监听器中定义的变量的值。
这是我的情况:我有一个带有一些 friend 名字的组合框。我已经在组合框中放置了一个监听器,它必须返回所选 friend 的姓氏。
我想在MyFrame
类的命令中插入surname
的值,但是有一些问题:一旦将surname
设置为final
(因为它必须在监听器中使用),我有一个错误:
无法分配最终局部变量 surname,因为它是在封闭类型中定义的
。
这是什么(或是什么)问题?这里我发布我的代码:
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
变量需要首先初始化。
关于java - 如何从主类访问监听器中定义的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18745594/