如何从 ActionListener 获取整数?

问题描述 投票:0回答:3

我是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);
    }
}
java eclipse actionlistener
3个回答
1
投票

你的逻辑有问题。您将 ActionListener 添加到了按钮。因此,每当您点击按钮时,text的值就是textField的值。但text的初始值为空。 在您的代码中,添加 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
投票

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

}


0
投票
Text.addActionListener(new ActionListener() {
        
        @Override
        public void actionPerformed(ActionEvent e) {
            TextJtextfiled();
        }
    });
public void TextJtextfiled() {
    String A = Text.getText();
    Text.selectAll();
    System.out.println(A);
    int B = Integer.parseInt(A);
    System.out.println(B);
}
© www.soinside.com 2019 - 2024. All rights reserved.