我想创建一个大文本字段供用户输入内容。我还希望它使用默认系统字体来匹配预期的外观。所以我尝试将 JEditorPane 与默认构造函数一起使用,它使用纯文本编码。
JEditorPane editorPane = new JEditorPane();
editorPane.setText(gettysburgAddress);
这样做的问题是纯文本编码不会在每个单词的末尾换行,只有当它用完字符时才会换行。
我尝试使用 HTML 编码,自动换行:
JEditorPane editorPane = new JEditorPane("text/html", "");
editorPane.setText(gettysburgAddress);
这有自动换行,但它默认为与系统默认字体不同的字体(Mac OS X 上的 Helvetica,我不想要这种字体。
我怎样才能两全其美:自动换行和系统默认字体?我不需要任何特殊格式或任何东西,所以如果可能的话,纯文本编码就可以了。
最佳答案
如果只需要一个使用系统字体的自动换行的 JEditorPane,并且您不需要任何特殊的东西,例如程式化的文本或图像,那么最好只切换到 JTextArea ,这是一个仅用于处理纯文本的文本组件。它默认不自动换行,但很容易实现:
JTextArea textArea = new JTextArea();
textArea.setLineWrap(true); //Makes the text wrap to the next line
textArea.setWrapStyleWord(true); //Makes the text wrap full words, not just letters
textArea.setText(gettysburgAddress);
如果您出于某种原因绝对必须使用 JEditorPane,您将不得不卷起袖子对 JEditorPane 呈现文本的方式进行一些更改。从好的方面来说,您有几种不同的方法可供选择。您可以:
关于java - JEditorPane 和系统字体中的自动换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16641065/