Java 如何从ActionListener获取整数?

Java 如何从ActionListener获取整数?,java,eclipse,actionlistener,Java,Eclipse,Actionlistener,我是java新手,有以下问题: 我在一个按钮上添加了一个ActionListener,我想从中访问一个数字,但它没有像我那样工作。我仔细寻找,但找不到答案。 代码如下所示: public class example extends JPanel{ int text; public example(){ JButton button = new JButton("x"); JTextField textField = new JTextFiel

我是java新手,有以下问题: 我在一个按钮上添加了一个ActionListener,我想从中访问一个数字,但它没有像我那样工作。我仔细寻找,但找不到答案。 代码如下所示:

public class example extends JPanel{

    int text;

    public example(){

        JButton button = new JButton("x");
        JTextField textField = new JTextField();

        add(textField);
        add(button);

        ActionListener al = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent event) {
                text = Integer.parseInt(textField.getText());
            }
        }

        button.addActionListener(al);
        system.out.println(text);
    }
}

您必须在操作侦听器顶部将文本变量声明为final

public class example extends JPanel{

final String text;

public example(){

    JButton button = new JButton("x");
    JTextField textField = new JTextField();

    add(textField);
    add(button);

    ActionListener al = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            text = textField.getText();
        }
    }

    button.addActionListener(al);
    system.out.println(text);
}

}问题在于你的逻辑。您已将ActionListener添加到按钮。因此,每当按下按钮时,text的值就是textField的值。但文本的初始值为空。 在您的代码中,添加ActionListener后,将打印文本的值。您可能希望更改ActionListener,如下所示:

ActionListener al = new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent event) {
        text = textField.getText();
        someFun();
        system.out.println(text);
    }
}
要从字符串中获取整数,请使用integer.parseInt()函数:

void someFun() {
    int num = Integer.parseInt(text);
    ... // Do whatever you want to do
}

问题在于逻辑。是的,它是有效的,但如何在ActionListener之外获取整数?请检查编辑。我认为您应该了解一下Java的基础知识,因为它不起作用。Eclipse希望删除“final”。。。附近有路吗?