我正在研究Java Swing应用程序。我在JPanel
内的JTabbedPane
内的JScrollPane
内有JTextArea
。我可以输入JTextArea
,除了回车键之外,键盘上的每个键都具有所需的效果。Enter键在JTextArea中不起作用
标签和空格正常工作。当我按下回车键,然后在启用自动换行功能的情况下输入行的末尾,在输入回车键的地方,行会被打破,导致我相信问题在于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”*为什么? 'JTextArea'专为显示纯文本而不是样式文本而设计。使用'JEditorPane'... ... – MadProgrammer 2015-03-02 23:35:39
@MadProgrammer:尽管如此,JTextArea API没有提及其他类型的文档无法使用(尽管我同意,PlainDocument是应该使用的)。 – 2015-03-02 23:37:15
请注意,HTML(渲染应用程序)通常会忽略新的行字符。 – 2015-03-02 23:48:33