java - 如何从主类访问监听器中定义的变量?

标签 java swing global-variables

我的 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/

相关文章:

java - 找不到适用于 jdbc :mysql//http://localhost:8080/hibernate_test 的合适驱动程序

java - 我们可以为 .NET 应用程序调用使用 Spring REST 支持创建的 RESTful Web 服务吗?

java - 通过 PropertyChangeListener 同步 JTextFields 值

java - 在网格布局中,Jbutton 大小不会随着 java 中 setBounds() 的使用而改变

javascript - Javascript 中的全局变量生命周期 - 重新加载时被破坏?

java - 使用 BeanUtils 忽略子类中的属性

Java 数组搜索时出错

java - 如何将屏幕截图发送到服务器而不存储在本地计算机中

python - 用于解析 Python 源以在全局变量后提取文档字符串的示例 ast 代码

javascript - requestAnimationFrame,非全局?