如何从ActionListener获取Integer?

时间:2017-09-20 19:17:08

标签: java eclipse actionlistener

我是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);
    }
}

2 个答案:

答案 0 :(得分:1)

问题在于你的逻辑。您将ActionListener添加到按钮。因此,无论何时按下按钮,文本的值都是 textField 的值。但 text 的初始值为null。 在代码中,添加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
}

答案 1 :(得分:0)

您必须在动作侦听器顶部声明文本变量为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);
}

}