与JTextArea
不同,JTextPane
没有选项可以关闭换行。我在JTextPane
s中找到一个solution关闭换行,但对于这样一个简单的问题,它似乎太冗长了。有更好的方法吗?
答案 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);
};
}