我正在开发 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
- 它不适用于样式文档。您必须将 JTextPane
与 HTMLEditorKit
一起使用,以便它知道它是 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/