JTextField的getText()为可打印变量

时间:2014-02-16 15:34:29

标签: java variables user-interface jframe jtextfield

我刚刚开始使用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将获得用户键入的任何文本,然后将其打印到控制台。简单。

我有一种感觉,我在这里缺少一些非常基本的东西,并且如果有人能让我了解那些东西,我会很感激。

2 个答案:

答案 0 :(得分:2)

在组件上发生事件之前,不会更新变量。为此,可以使用DocumentListenerActionListener

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);
    }
});

详细了解如何Create GUI with SwingWriting Event Listeners