JTextPane换行

时间:2011-08-23 03:43:55

标签: java swing jtextpane

JTextArea不同,JTextPane没有选项可以关闭换行。我在JTextPane s中找到一个solution关闭换行,但对于这样一个简单的问题,它似乎太冗长了。有更好的方法吗?

2 个答案:

答案 0 :(得分:11)

No Wrap Text Pane。这是链接中包含的代码。

JTextPane textPane = new JTextPane();
JPanel noWrapPanel = new JPanel( new BorderLayout() );
noWrapPanel.add( textPane );
JScrollPane scrollPane = new JScrollPane( noWrapPanel );

答案 1 :(得分:1)

No Wrap Text Pane还提供了一种替代解决方案,不需要将JTextPane包裹在JPanel中,而是覆盖getScrollableTracksViewportWidth()。我更喜欢这个解决方案,但它对我来说并不适用 - 我注意到如果视口变得比JTextPane的最小宽度窄,那么仍然会发生包装。

我发现JEditorPane覆盖getPreferredSize(),当视口太窄而无法通过返回最小宽度而不是首选宽度来尝试“修复”事物。这可以通过再次覆盖getPreferredSize()来解决'不,真的 - 我们总是想要实际的首选尺寸'来解决:

public class NoWrapJTextPane extends JTextPane {
    @Override
    public boolean getScrollableTracksViewportWidth() {
        // Only track viewport width when the viewport is wider than the preferred width
        return getUI().getPreferredSize(this).width 
            <= getParent().getSize().width;
    };

    @Override
    public Dimension getPreferredSize() {
        // Avoid substituting the minimum width for the preferred width when the viewport is too narrow
        return getUI().getPreferredSize(this);
    };
}