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