简介
使用JTextPane展示文本内容时,为了体验更好,我们希望内容可能自动换行,即:只有垂直滚动条,水平方向文本超出自动换行。
解决方案
自定义FixedWidthJTextPane 类,指定宽度,高度设置成最大值。由于不同布局使用的不同的大小:getPreferredSize
、getMinimumSize
、getMaximumSize
,保险起见,需要重写者三个方法,都固定好宽度。
public class FixedWidthJTextPane extends JTextPane {
private final int width;
public FixedWidthJTextPane(int width) {
super();
this.width = width;
super.setSize(new Dimension(width, Short.MAX_VALUE));
}
@Override
public Dimension getPreferredSize() {
Dimension preferredSize = super.getPreferredSize();
return new Dimension(width, preferredSize.height);
}
@Override
public Dimension getMaximumSize() {
Dimension maximumSize = super.getMaximumSize();
return new Dimension(width, maximumSize.height);
}
@Override
public Dimension getMinimumSize() {
Dimension minimumSize = super.getMinimumSize();
return new Dimension(width, minimumSize.height);
}
}