java - JEdi​​torPane 和系统字体中的自动换行

标签 java swing java-7 jeditorpane

我想创建一个大文本字段供用户输入内容。我还希望它使用默认系统字体来匹配预期的外观。所以我尝试将 JEditorPane 与默认构造函数一起使用,它使用纯文本编码。

JEditorPane editorPane = new JEditorPane();
editorPane.setText(gettysburgAddress);

enter image description here

这样做的问题是纯文本编码不会在每个单词的末尾换行,只有当它用完字符时才会换行。

我尝试使用 HTML 编码,自动换行:

JEditorPane editorPane = new JEditorPane("text/html", "");
editorPane.setText(gettysburgAddress);

enter image description here

这有自动换行,但它默认为与系统默认字体不同的字体(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 呈现文本的方式进行一些更改。从好的方面来说,您有几种不同的方法可供选择。您可以:

  • 将编码设置为 HTML(自动换行)并使用 CSS 指定字体(描述 here)
  • 将编码设置为 RTF(自动换行)并修改底层 RTFEditorKit 的字体值(描述 here)
  • 创建一个 SimpleAttributeSet 并在添加字符串时使用它来指定它们应该以那种方式显示(描述 here)

关于java - JEdi​​torPane 和系统字体中的自动换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16641065/

相关文章:

java - 如何在 Java Swing 中抓取鼠标?

java - 用于在 Eclipse 中查找并用 ArrayList<> 替换所有 ArrayList<something> 的正则表达式

java - JDK 7 中使用的 ZonedDateTime 和 ChronoUnit 的替代方案

macos - 是否可以在生产中获取并运行 JDK 7?

来自 JVM 或操作系统的 Java 语言环境/时区列表?

java - 如何使用 Thymeleaf 将 html 文件包含到另一个 html 文件中

java - 如何使用 Java 在 mailchimp 中创建新列表?

java - 如何更改循环内的 JTextField 值

java - 无法将 JComponent 添加到 JPanel

Java程序帮助