We wszystkich wersjach Javy do 6 domyślnym zachowaniem JTextPane umieszczonym wewnątrz JScrollPane było: zawijanie linii na granicach słów, jeśli to możliwe. Jeśli nie, to i tak je zawiń.Zawijanie długich słów w JTextPane (Java 7)
W JDK 7 domyślnym zachowaniem wydaje się być: zawijanie wierszy do granic wyrazów, jeśli to możliwe. Jeśli nie, po prostu rozwiń szerokość JTextPane (nigdy nie zawijaj długich słów).
Jest to łatwe do odtworzenia tego, tutaj jest 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);
}
}
Wystarczy go uruchomić w JDK 6 oraz w JDK 7, napisać kilka małych słowa i napisać długiego słowa, a ujrzycie różnica.
Moje pytanie jest proste ... nowe domyślne zachowanie w JDK 7 całkowicie zakłóca mój program (powinny one być bardziej ostrożne w Oracle przy zmianie tego rodzaju domyślnych ustawień ... wydają się nieistotne, ale kiedy używasz JTextPane do wyświetlania danych, które zwykle zawierają bardzo długie ciągi liter, nie są tak nieważne - w rzeczywistości mam zamiar złożyć raport o błędzie, ale chciałbym mieć obejście,/jeśli nie rozwiązują to). Jakikolwiek sposób powrócić do poprzedniego zachowania?
Zauważ, że mam zaznaczone odpowiedź na pytanie powiązanego How is word-wrapping implemented in JTextPane, and how do I make it wrap a string without spaces? ale to nie jest odpowiedź na to pytanie - zapewnia sposób dokonywania wrap JTextPane bez żadnego względu na wszystko dla białych znaków, ale dla mnie to pożądane zachowanie jest podzielona linie w białych znakach, jeśli to możliwe, i gdzie indziej, jeśli nie jest to możliwe (jak w poprzednich wersjach Java).
Czy używając [ 'invokeLater()'] (http://download.oracle.com/javase/tutorial/uiswing/concurrency/ initial.html) pomóc? –
Nie ... ten sam efekt. –
Mam dokładnie ten sam problem. Powiązane: https://forums.oracle.com/forums/thread.jspa?threadID=2374090 (brak odpowiedzi ...) Plakat tam już sporządził raport o błędzie, ale został zamknięty jako "nie błąd", bez słowo wyjaśnienia ... – PhiLho