Java 如何计算JTextPane';它的实际高度和长度是多少

Java 如何计算JTextPane';它的实际高度和长度是多少,java,swing,jtextpane,Java,Swing,Jtextpane,我设置JTextPane的最大宽度(200px)并使用以下方法: if(textPane.getPreferredSize().width> maxWidth ) { textPane.setSize(maxWidth, Integer.MAX_VALUE); View v = textPane.getUI().getRootView(textPane); v.setSize(maxWidth, Integer.MAX_VALUE); int

我设置JTextPane的最大宽度(200px)并使用以下方法:

if(textPane.getPreferredSize().width> maxWidth ) {
textPane.setSize(maxWidth, Integer.MAX_VALUE);
        View v = textPane.getUI().getRootView(textPane);
        v.setSize(maxWidth, Integer.MAX_VALUE);
        int preferredHeight = (int) v.getPreferredSpan(View.Y_AXIS);
        textPane.setPreferredSize(new Dimension(maxWidth, preferredHeight));
}
但是计算的高度不是“实际”高度,它比需要的高度高了一点,宽度也比需要的宽了一点(大约25 px),当限制最大宽度时如何计算实际需要的高度?

setPreferredSize()、setMaximumSize等。。行为取决于组件中设置的实际LayoutManager。

试试这个

文本是可编辑的还是可选择的(后者用于复制等)?为什么?因为,从长远来看,Don,Don,Don是最有用的建议。您需要非常特殊的要求才能不遵循这一点。组件中的布局管理器是BoxLayout(Y_轴),计算的高度不是“真实”高度,因此如果使用它设置setMaximumSize等。。。无法正常工作。组件在BoxLayout中的放置方式和大小取决于您使用胶水和固定区域的方式。试着发布更多的代码,从这几行我不能告诉你更多。也许@Andrew Thompson有一些建议。在OP回答我的问题之前,我不打算进一步考虑这个问题@OP:请注意,这是一个讨论论坛,不是服务台。