JTextPane перенос строки
В отличие от JTextArea
, JTextPane
не имеет возможности отключить перенос строки Я нашел одно решение для отключения переноса строк в JTextPane
с, но это кажется слишком многословным для такой простой проблемы. Есть лучший способ сделать это?
3 ответа
См. Текстовую панель без переноса. Вот код, включенный по ссылке.
JTextPane textPane = new JTextPane();
JPanel noWrapPanel = new JPanel( new BorderLayout() );
noWrapPanel.add( textPane );
JScrollPane scrollPane = new JScrollPane( noWrapPanel );
Текстовая панель No Wrap также предоставляет альтернативное решение, которое не требует переноса 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);
};
}