我一直致力于从JFrame中的文本字段中获取文本的程序。这是获取文本的代码:
JTextField textField = new JTextField(a3);
String text = textField.getText();
if (text.equals("hi")){
textArea.setText("Hey!");
}`
当我运行代码时,一切正常,JFrame出现了。但是当我更改文本然后按回车键时,它什么也没做。我需要使用ActionListener吗?
答案 0 :(得分:1)
代码按顺序执行。上面的代码意味着:
您想要的是在某些GUI发生时重新执行此测试。例如,当用户单击按钮时,或者当用户在文本字段中按Enter键时。因此,您需要将事件监听器附加到按钮(或文本字段)以告知Swing:当单击按钮时(或者在字段中按下enter时),我希望这段代码是执行。
有关详细信息,请参阅Swing tutorial about events。
答案 1 :(得分:1)
您需要设置actionListener。这将响应Enter按键并调用侦听器。 The Java Tutorials > How to use Text Fields
中记录了整个过程以及听众JPanel panel = new JPanel();
final JTextField textField = new JTextField(20);
final JTextArea textArea = new JTextArea(2,20);
panel.add(textField);
panel.add(textArea);
frame.getContentPane().add(panel);
textField.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent e) {
String text = textField.getText();
if (text.equals("hi")) {
textArea.setText("Hey!");
}
}
});
请注意,文本字段和区域必须是最终的(如果它们是局部变量),以便在侦听器中使用它们,因为它是一个匿名类。
答案 2 :(得分:0)
您必须为textfield设置一个监听器,并在监听器内检查您的代码。
答案 3 :(得分:0)
在创建文本字段后立即执行if条件检查文本区域中执行的代码。然后在程序运行几秒后更改文本字段,并且没有执行的代码再次检查文本字段。这根本不起作用。
代码逐行执行,一次执行一次。代码不会神奇地意识到程序中正在发生变化的事情,除非你告诉它,否则它无法阻止并等待某些事情发生。不幸的是,您不能简单地在代码中的这一行暂停,否则您的程序将停止响应。
您需要一种方法让您的程序不断检查文本字段的值。最简单的方法是使用actionListener对象,该对象将订阅文本字段,并在文本字段发生时自动调用。