Во всех версиях Java до 6 поведение по умолчанию JTextPane, помещенное внутри JScrollPane, было: обертывание строк по границам слов, если это возможно. Если нет, тогда заверните их.
В JDK 7 поведение по умолчанию выглядит следующим образом: оберните строки на границах слов, если это возможно. Если нет, просто расширьте ширину JTextPane (никогда не завершайте длинные слова).
Это легко воспроизвести, вот SSCCE:
public class WrappingTest extends JFrame
{
public static void main ( String[] args )
{
new WrappingTest();
}
public WrappingTest ()
{
setSize(200,200);
getContentPane().setLayout(new BorderLayout());
JTextPane jtp = new JTextPane();
JScrollPane jsp = new JScrollPane(jtp);
jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
getContentPane().add(jsp,BorderLayout.CENTER);
setVisible(true);
}
}
Просто запустите его в JDK 6 и в JDK 7, напишите несколько небольших слов и напишите длинное слово, и вы увидите разницу.
Мой вопрос прост... новое поведение по умолчанию в JDK 7 полностью испортит мою программу (они должны быть более осторожны в Oracle с изменением такого типа умолчаний... они кажутся несущественными, но когда вы используете JTextPane, чтобы отображать данные, которые обычно содержат очень длинные строки букв, они не так несущественны - на самом деле я собираюсь подать отчет об ошибке, но мне бы хотелось иметь временное решение, пока они не разрешают его). Любой способ вернуться к предыдущему поведению?
Обратите внимание, что я проверил ответ на соответствующий вопрос Как выполняется перенос слов в JTextPane, и как мне заставить его обернуть строку без пробелов? он не отвечает на этот вопрос - он предоставляет способ сделать обертку JTextPane без каких-либо ограничений для пробелов, но для меня желаемое поведение - это разделение строк по пробелу, если это возможно, и в других местах, если это невозможно (как в предыдущих версиях Java).