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;
}
}
});
}
}
答案 0 :(得分:4)
您正在尝试重新分配final
变量,这就是问题所在。
您的final
变量也需要首先进行初始化。
答案 1 :(得分:1)
首先,有两件事是final
变量在声明时必须初始化,final
变量不能重新赋值。
不幸的是,你正在犯两个错误。
另一个问题是你应该发布有效代码;它会让其他人轻易找到问题。
答案 2 :(得分:1)
除了已经指出的代码问题之外,我想问题是你需要存储姓氏还是只是用它来更新标签?
如果您需要存储数据,请将姓氏变量移至班级。
如果您只是更新标签,请执行类似
的操作nameLbl.setText("surname: " + result);