java - 在文本字段中键入内容,然后将其附加到文本区域,得到奇怪的输出 - GUI JAVA

标签 java swing jframe jtextfield jtextarea

所以我正在尝试实现一个简单的 GUI 程序,用户在文本字段中键入内容,然后当他按 Enter 时,文本将附加到文本字段,但我得到了这种输出:

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

}

请帮忙。

最佳答案

您附加的是 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。

关于java - 在文本字段中键入内容,然后将其附加到文本区域,得到奇怪的输出 - GUI JAVA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29439768/

相关文章:

java - Android 上的自定义 View 和窗口属性

java - 在多行 JTextField 中更改光标垂直对齐方式

java - Key Listener 继续关注 Java 游戏

java - 用于生成 HTML 标签的设计模式

java - Java中获取文件所在驱动器的最佳方法是什么?

java - 使用 C3P0 时的 JDBC SQLite ATTACH 查询

java - 如何设置带有滚动条的JList的大小?

java - 给 JList 的消息

java - 如何从 JFrame 中删除 JScrollPane?

java - 允许用户动态添加 jbutton