Java Swing JTextField.getText没有返回任何内容

时间:2014-10-31 15:30:40

标签: java swing

出于某种原因 getText 不适用于文本字段。

也许我对此做错了。

    private JTextField txtTemp;
    txtTemp = new JTextField();
    txtTemp.setBounds(350, 57, 86, 20);
    mainPanel.add(txtTemp);
    txtTemp.setColumns(10);

    String filePath = txtTemp.getText();
    System.out.println("File path is" +filePath);

在文本框中输入内容时,不会打印任何内容。

我也是通过使用动作监听器来完成的。加载程序,让用户添加一些文本。

    btnTest = new JButton("TEST");
    btnTest.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            String filePath = txtTemp.getText();
            System.out.println("File path is" +filePath);
        }
    });

仍然返回空白。

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

  

"在文本框中输入内容时,不打印任何内容。" ..."仍然返回空白。"

听起来你想要在输入文本字段时发生某些事情。为此,我们将使用DocumentListener,该监听器用于更改文本字段的基础Document

final JTextField field = new JTextField(20);
field.getDocument().addDocumentListener(new DocumentListener(){
    @Override
    public void insertUpdate(DocumentEvent e) { printText(); }
    @Override
    public void removeUpdate(DocumentEvent e) { printText(); }
    @Override
    public void changedUpdate(DocumentEvent e) { printText(); }

    private void printText() {
        System.out.println(field.getText());
    }
});

除此之外,如果您想在使用类型输入时发生某些事情,请在文本字段中添加ActionListener

答案 1 :(得分:0)

也不要在“动作侦听器”中执行,在ActionListener中只执行 吗?

我不知道你哪里出错了,你期待GUI屏幕上的输出吗?如果是这样你就错了,看看终端......

在这里,我尝试了它完美无缺,它在点击终端上的按钮后打印用户输入文本,

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class TestText{
public static void main(String[] args)

{

JFrame frame=new JFrame("TextFieldTest");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel mainPanel=new JPanel();


     JTextField txtTemp;
    txtTemp = new JTextField();
    txtTemp.setBounds(350, 57, 86, 20);
    mainPanel.add(txtTemp);
    txtTemp.setColumns(10);


JButton  btnTest = new JButton("TEST");

    btnTest.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            String filePath = txtTemp.getText();
            System.out.println("File path is" +filePath);
        }
    });

frame.add(BorderLayout.SOUTH,btnTest);
frame.add(mainPanel);
frame.setSize(600,600);
frame.pack();
frame.setVisible(true);

}//main ends


}//class ends

答案 2 :(得分:0)

你的JTextField似乎是空的,只要你不提供任何输入,但常见的错误可能是:

可编辑吗?

 txtTemp.setEditable(true);    

是否添加了任何文字?

 public void changeTxtField(String text)
{
    txtTemp.setText(text);
    System.out.println(text);
}

你的代码看起来很好

答案 3 :(得分:0)

我最终解决了这个问题。

如果我声明并实例化它起作用的对象,则在顶部。

private JTextField txtTemp = new JTextField();