java - 在内部类中访问局部变量(java)

标签 java actionlistener inner-classes final

编译代码后出现两个错误。

错误是:

1.

  local variable input is accessed within inner class; 
  needs to be declared final
     String name = input.getText();

2.

  local variable c_age is accessed within inner class; 
  needs to be declared final
     Object child_age = c_age.getSelectedItem();

这是我的代码:

import javax.swing.*;
import java.awt.event.*;

public class GUI
{
    public static void main(String[] args)
    {
        JFrame frame = new JFrame("Try GUI");
        JLabel l1 = new JLabel("Please Enter Your Child's Name");
        JTextField input = new JTextField("",10);

        JLabel l2 = new JLabel("Choose Your Child's Age");
        String[] age = {"Age","1","2","3","4","5","6"};
        JComboBox c_age = new JComboBox(age);

        JButton button = new JButton("Search");

        JTextArea result = new JTextArea();
        JScrollPane extend_area = new JScrollPane(result);

        button.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent ae)
            {
                String name = input.getText();
                Object child_age = c_age.getSelectedItem();
            }
        });

        JPanel panel = new JPanel();
        panel.add(l1);
        panel.add(input);
        panel.add(l2);
        panel.add(c_age);
        panel.add(button);
        panel.add(extend_area);
        frame.add(panel);
        frame.setSize(350,350);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

}

我该如何解决这个错误?

最佳答案

你需要声明

JTextField input = new JTextField("",10);

JComboBox c_age = new JComboBox(age);

像这样:

final JTextField input = new JTextField("",10);

final JComboBox c_age = new JComboBox(age);

这意味着inputc_age 不能改变:

Any local variable, used but not declared in an inner class must be definitely assigned before the body of the inner class.

解释取自 The Java Language Specification,Section - 8.1.3 Inner Classes and Enclosing Instances

关于java - 在内部类中访问局部变量(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5644334/

相关文章:

java - 匿名内部类中的变量和访问

java - 派生嵌套类中的静态初始化程序 block

java - 从证书文件中获取 key 用于 AES 算法加密和解密

java - 如何表示 "unset"Java 成员,以便可以使用 Jackson 将它们序列化为未设置的 JSON

java - RestEasy:找不到 MessageBodyWriter 类型的响应对象:媒体类型的 java.util.ArrayList:application/json

java - 更新单元格值 (JTable)

java - 根据组合框选择更新文本框

Java:在arraylist中存储扩展对象并调用parent toString方法

java - 添加ActionListener并调用其他类中的方法

kotlin - 内部类中的嵌套类