Trong tất cả các phiên bản của Java lên đến 6, hành vi mặc định của một JTextPane đặt bên trong một JScrollPane là: bọc các đường ở ranh giới từ nếu có thể. Nếu không, sau đó quấn chúng.Quấn các từ dài trong JTextPane (Java 7)
Trong JDK 7, hành vi mặc định có vẻ là: các đường bao bọc ở các ranh giới từ nếu có thể. Nếu không, chỉ cần mở rộng chiều rộng của JTextPane (không bao giờ quấn các từ dài).
Nó rất dễ dàng để tái sản xuất này, đây là một 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);
}
}
Chỉ cần chạy nó trong JDK 6 và trong JDK 7, viết một số từ nhỏ, và viết một từ lâu, và bạn sẽ thấy những Sự khác biệt.
Câu hỏi của tôi rất đơn giản ... hành vi mặc định mới trong JDK 7 hoàn toàn làm rối loạn chương trình của tôi (họ nên cẩn thận hơn với Oracle khi thay đổi kiểu mặc định này ... có vẻ không quan trọng nhưng khi bạn đang sử dụng một JTextPane để hiển thị dữ liệu thường chứa các chuỗi ký tự rất dài, chúng không quá quan trọng - trong thực tế tôi sẽ gửi một báo cáo lỗi, nhưng tôi muốn có một cách giải quyết trong khi/nếu chúng không giải quyết nó). Bất kỳ cách nào để quay trở lại hành vi trước đó?
Lưu ý rằng tôi đã kiểm tra câu trả lời cho câu hỏi liên quan How is word-wrapping implemented in JTextPane, and how do I make it wrap a string without spaces? nhưng không trả lời câu hỏi này - nó cung cấp cách tạo gói JTextPane mà không quan tâm đến khoảng trắng, nhưng đối với tôi, hành vi mong muốn được chia các dòng ở khoảng trống nếu có thể, và ở nơi khác nếu không thể (như trong các phiên bản Java trước).
Không sử dụng [ 'invokeLater()'] (http://download.oracle.com/javase/tutorial/uiswing/concurrency/ initial.html) trợ giúp? –
Không ... hiệu ứng tương tự. –
Tôi có cùng một vấn đề. Liên quan: https://forums.oracle.com/forums/thread.jspa?threadID=2374090 (không có câu trả lời ...) Các poster đã tạo ra một báo cáo lỗi, nhưng nó đã được đóng lại là "không phải là một lỗi", mà không có một lời giải thích ... – PhiLho