Java 如何在JTextPane中围绕组件包装文本?

Java 如何在JTextPane中围绕组件包装文本?,java,swing,insert,jtextpane,jcomponent,Java,Swing,Insert,Jtextpane,Jcomponent,我不理解JTextPane中的包装行为。如果我插入一个短文本,然后是一个JComponent,然后再插入一个短文本,当然,如果框架足够大,我可以在一行中看到插入的内容。但是,如果文本长得多,需要几行,那么组件总是放在新行中 我已经认识到,将组件插入JTextPane后,其文本会变长一个字符。那么,如果一个组件被JTextPane视为一个角色,为什么它的行为不像一个角色?这可能取决于java版本吗?我使用Java(TM)SE运行时环境(build 1.7.0-b147) 下面是我的代码(用shor

我不理解JTextPane中的包装行为。如果我插入一个短文本,然后是一个JComponent,然后再插入一个短文本,当然,如果框架足够大,我可以在一行中看到插入的内容。但是,如果文本长得多,需要几行,那么组件总是放在新行中

我已经认识到,将组件插入JTextPane后,其文本会变长一个字符。那么,如果一个组件被JTextPane视为一个角色,为什么它的行为不像一个角色?这可能取决于java版本吗?我使用Java(TM)SE运行时环境(build 1.7.0-b147)

下面是我的代码(用shortText/longText实例化变量currentText以重现上述行为):


这种奇怪的行为似乎是由于您设置的内容类型而发生的。尝试删除此行:

textPane.setContentType ( "text/html" );
在那之后你会发现一切都很好。我不知道为什么会发生这种情况——可能是某些渲染错误,也可能只是一种预期的行为


另外,我不认为在文本窗格中使用Swing组件(不管是什么原因)是一个好的选择。但这只是我的观点…

是的,它是有效的。为什么您认为使用JTextPane不是一个好主意?我想创建一个做练习的程序。练习必须包含组合框和文本字段。用户还必须能够“下划线”(选择)文本。如何以其他方式进行?使用JLabel还是禁用的JTextFields?你不能选择他们的文本,是吗?即使你可以,我认为每次你有一个文本块时添加这么多这样的元素是不好的。@ka3ak好吧,这可能是最简单的方法之一:)
textPane.setContentType ( "text/html" );