我刚刚开始使用GUI,我正在尝试从用户那里获取文本输入,并将其分配给变量供以后使用。
很简单,我想。错了,我是。
我希望我的框架看起来像:
public class firstFrame extends JFrame {
JTextField f1 = new JTextField();
String text;
public firstFrame(String title) {
super(title);
setLayout(new BorderLayout());
Container c = getContentPane();
c.add(f1);
text = f1.getText();
System.out.println(text);
}
}
变量text
将获得用户键入的任何文本,然后将其打印到控制台。简单。
我有一种感觉,我在这里缺少一些非常基本的东西,并且如果有人能让我了解那些东西,我会很感激。
答案 0 :(得分:2)
在组件上发生事件之前,不会更新变量。为此,可以使用DocumentListener
或ActionListener
f1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String text = f1.getText();
...
}
});
答案 1 :(得分:1)
getText()
仅获取调用时JTextArea
中的文字。
您在构造函数中调用它。因此,当您实例化new firstFrame
时,没有初始文本。
要记住的一点是GUI是事件驱动的,这意味着您需要一个事件处理程序来捕获和处理事件。
一个选项是向ActionListener
添加JTextField
,因此当您在输入文字后按 Enter 时,文本将会打印出来。
f1.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
String text = f1.getText();
System.out.println(text);
}
});