键入文本字段然后将其附加到文本区域,获得奇怪的输出GUI JAVA

时间:2015-04-03 21:13:45

标签: java swing jframe jtextfield jtextarea

所以我试图实现一个简单的GUI程序,用户输入文本字段,然后当他按下回车键时,文本被附加到文本字段,但我得到这种输出:

enter image description here

这是我的代码:

TextField.java:

package activity1;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JLabel;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JOptionPane;
import java.awt.FlowLayout;

public class TextField extends JFrame{

private JTextField text;
private JTextArea textArea;

public TextField()
{
    super("Activity 1");
    setLayout(new FlowLayout());

    text = new JTextField(20);
    add(text);

    textArea = new JTextArea(5,20);
    textArea.setEditable(false);
    add(textArea);

    TextFieldHandler handler = new TextFieldHandler();

    text.addActionListener(handler);
}

private class TextFieldHandler implements ActionListener{

    public void actionPerformed(ActionEvent event)
    {
        String line = text.getText();
        textArea.append(text + "\n");
        //text.setText("");
    }
}

}

我的主要TextFieldTEST.java:

package activity1;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class TextFieldTEST {

public static void main(String[] args) {

    TextField myFrame = new TextField();
    myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    myFrame.setSize(300,200);
    myFrame.setVisible(true);
}

}

请帮忙。

1 个答案:

答案 0 :(得分:2)

您附加了JTextField而不是其内容,因此您在此JTextField对象上看到了调用toString()的结果。修复很简单:

变化:

String line = text.getText();
textArea.append(text + "\n"); // don't use text here

为:

String line = text.getText();
textArea.append(line + "\n"); // notice the difference? using line here

作为附带建议:

  • 将您的JTextArea放入JScrollPane并将 添加到GUI。
  • 不要设置组件的大小。而是pack()您的GUI,让布局管理器和组件自行调整大小。
  • 例如,我使用BorderLayout(这是JFrame的contentPane的默认设置),然后添加JTextField BorderLayout.PAGE_START和包含JTextArea BorderLayout.CENTER的JScrollPane。