我只是有一个关于如何在Java中使用文本字段的基本问题。这很简单,但我一直在寻找的教程和其他问题都很有帮助,我希望有人可以为我解释一些事情。< / p>
现在我有以下代码,为了示例我只是打了一对:
import javax.swing*;
public class testText {
public static void main(String[] args){
JFrame frame = new JFrame();
JTextField text = new JTextField();
frame.add(text);
frame.setVisible(true);
System.out.println(text.getText());
}
}
我尝试做的只是将用户输入的内容打印到控制台的文本字段中。但是当我输入文本字段时没有任何反应。
现在,根据我所做的研究,我认为问题在于我没有使用actionListener。问题是,我真的不明白这些是如何运作的,我希望有人可以为我澄清。
我一直在使用this tutorial来尝试解决问题,特别是他们靠近顶部的TextDemo示例。我仍然有点不知所措,我似乎无法在不破坏程序的情况下找到使用actionlistener界面的任何方法。如果有人可以简单地直接解释如何使用actionlistener从文本字段中提取字符串然后使用它,或者将我指向其他地方,我可以找到一个简单直接的解释,我会非常感激。我现在已经打了五个小时对这个问题,我完全没有任何表现,所以我为提出这样一个基本问题而道歉,但我不知所措。
答案 0 :(得分:1)
在字段中输入输入键时,将调用动作侦听器。来自JTextfield Javadoc:
文本字段如何消耗VK_ENTER事件取决于是否 文本字段具有任何动作侦听器。如果是这样,那么VK_ENTER会导致 听众获得一个ActionEvent,而VK_ENTER事件是 消耗掉。
以下是修改后的示例以使用动作侦听器:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class testText {
public static void main(String[] args){
JFrame frame = new JFrame();
final JTextField text = new JTextField();
frame.add(text);
frame.setVisible(true);
text.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(text.getText());
}
});
}
}
这是面向对象的complete example,而不仅仅依赖于静态主方法。