java - 输入键在 JTextArea 中不起作用

标签 java swing input jtextarea enter

我正在开发 Java Swing 应用程序。我在 JPanel 内的 JTabbedPane 内的 JScrollPane 内有一个 JTextArea 。我可以在 JTextArea 中输入内容,键盘上的每个键都具有所需的效果,除了 Enter 键。

制表符和空格效果很好。当我按 Enter 键,然后在启用自动换行的情况下键入到行尾时,在我键入 Enter 键的位置断行,这让我相信问题在于 JTextArea正在显示文本。我给 JTextArea 一个新的 HTMLDocument。请注意,当我没有为 JTextArea 提供新的 HTMLDocument 时,回车键可以正常工作。

重现问题的简单代码:

import javax.swing.*;
import javax.swing.text.html.HTMLDocument;
import java.awt.*;

public class Driver extends JFrame {
    public Driver() {
        setLayout( new GridLayout( 1, 1 ) );

        JTabbedPane tabbedPane = new JTabbedPane();
        add( tabbedPane );

        JTextArea textArea = new JTextArea( new HTMLDocument() );
        textArea.setLineWrap( true );

        JScrollPane scrollPane = new JScrollPane( textArea );
        tabbedPane.addTab( "No enter key!", scrollPane );

        pack();
        getContentPane().setVisible( true );
        setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE );
        setSize( 640, 480 );
        setVisible( true );
        setFocusable( true );
    }

    public static void main( String[] args ) {
        new Driver();
    }
}

最佳答案

JTextArea 不理解 HTMLDocument - 它不适用于样式文档。您必须将 JTextPaneHTMLEditorKit 一起使用,以便它知道它是 HTML。由于某种原因,您无法提供自己的文档,但如果您从组件中获取文档,则它可以正常工作。

    final HTMLEditorKit htmlKit = new HTMLEditorKit();
    final JTextPane textPane = new JTextPane( );
    textPane.setEditorKit(htmlKit);
    textPane.setEditable(true);
    JScrollPane scrollPane = new JScrollPane( textPane );

    Document doc = textPane.getDocument();
    System.out.println(doc.getClass().getName()); // It's an HTML Document

关于java - 输入键在 JTextArea 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28821433/

相关文章:

java - 是否可以为这两个查询设计一个 Google Datastore 索引?

jquery - 在 jQuery 中将一个输入字段复制到一组其他输入字段

java - JTextField 中的数字数组 - Java

java - 如何在 Java 中保持 ResultSet 打开?

Java - TrayIcon 消息在 Windows XP、Vista 上不显示

java - 使用 Java 创建 XML 文档

java - 如何获取practice.geektogeek 中的输入?

java - 文本数据类型的PreparedStatement

java - 未找到源路径

java - 使用Java将十六进制转储的字符串表示形式转换为字节数组?