我是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);
}
}
你的逻辑有问题。您将 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
}
您必须在操作监听器顶部将文本变量声明为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);
}
}
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);
}