我正在一个项目中,该项目需要能够将JComponents以及普通文本插入JTextPane中。当前,我正在使用JTextPane.insertComponent(Component)添加JComponent,但是,它们似乎是偶然添加的,没有真正的组织。我终于弄清楚了它将插入克拉的任何位置,因此我尝试将其设置在文本的末尾。但是,当我执行:

int len = txtConsole.getText().length();
txtConsole.setCaretPosition(len - 1);


我收到一条错误消息,指出该位置无效。有没有简单或更好的方法将JComponents插入JTextPane的最后一行的末尾?

另外,如果上述可行,是否有办法更改JComponent与文本其余部分(例如居中的内联)内联放置的位置?

最佳答案

以下代码对我有用:

int offset = textPane.getDocument().getLength();
textPane.setCaretPosition(offset);
textPane.insertComponent( ... );


确保您的代码在EDT上执行。

如果您还有其他问题,请发布您的SSCCE演示问题。

关于java - 将内联JComponent插入JTextPane吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3744490/

10-12 05:49