java - 每次我希望清除一个新的 DefaultStyledDocument 并重新开始时,构建一个新的 DefaultStyledDocument 是一种不好的形式吗?

标签 java swing jtextpane

我的程序最终从一个 JTextPane(A) 获取一个 StyledDocument 对象,并将其传递给另一个 JTextPane(B)。当我完成通过后,我希望 JTextPane(A) 清除文本和任何格式,并且基本上是具有默认 JTextPane 设置的对象的全新构建。为此,我目前正在做类似的事情:

//make things
JTextPane inputField = new JTextPane();
JTextPane outputField = new JTextPane();

//move inputField text (with formatting) from inputField to outputField
StyledDocument doc = inputField.getStyledDocument();
EditorKit kit = inputField.getEditorKit();
outputField.setStyledDocument(doc);
outputField.setEditorKit(kit);
outputField.revalidate();

//reset the inputField so that it's fresh and ready for new input
inputField.setStyledDocument(new DefaultStyledDocument());
inputField.setEditorKit(new StyledEditorKit());

我意识到在这个示例中我没有移动任何文本或格式(只是一个空白文档对象),但这些是我正在执行的操作,并且我很好奇“新建”工具包和文档是否是一种将我的 JTextPane 重置为默认设置的惰性方法。提前致谢!

最佳答案

恕我直言,创建一个新的文档实例绝对没问题。事实上,它更快,因为监听器不会更新 View 来反射(reflect)空的 Document,然后反射(reflect)新的 Document 内容。

顺便说一句:如果是同一类别,则无需重置套件。调用 setDocument()

就足够了

关于java - 每次我希望清除一个新的 DefaultStyledDocument 并重新开始时,构建一个新的 DefaultStyledDocument 是一种不好的形式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17219487/

相关文章:

java - 我的 Java Swing 应用程序不断启动同一个窗口

java - 将 JPanel 的内容复制到 BufferedImage 上

java - JTextPane 不换行?

Java Swing : Mouse cursor misbehaves when held over a rectangle

java - JTextPane 中使用 HTML 的 1 像素表格边框

java - 无法在 OS X 上初始化类 org.bytedeco.javacpp.avutil 以及 JavaCV 中的 Maven

java - 我在哪里可以找到以及如何修复我的 .classpath 文件

java - 单击按钮时更改照片

java - 致命异常 : java. lang.OutOfMemoryError 使用 okhttp3 okio 下载文件

java - 在服务器上创建的 Zip 文件并使用 java 下载该 zip