2011-08-23 26 views
7

Không giống như JTextArea, JTextPane không có tùy chọn tắt gói hàng. Tôi đã tìm thấy một số solution để tắt gói hàng trong JTextPane giây, nhưng dường như quá chi tiết cho một vấn đề đơn giản như vậy. Có cách nào tốt hơn để làm điều này?Dòng gói JTextPane

Trả lời

10

Xem No Wrap Text Pane. Đây là mã được bao gồm từ liên kết.

JTextPane textPane = new JTextPane(); 
JPanel noWrapPanel = new JPanel(new BorderLayout()); 
noWrapPanel.add(textPane); 
JScrollPane scrollPane = new JScrollPane(noWrapPanel); 
+1

Điều duy nhất gói 'cái JTextPane' trong một' JPanel' làm là vô hiệu hóa các thanh cuộn dọc. – Jeffrey

+0

@Jeffrey, hoạt động tốt với tôi bằng cách sử dụng JDK6_7 (và các phiên bản cũ hơn) trên XP. Tôi không nghĩ rằng tôi sẽ đi đến tất cả các rắc rối của việc tạo một mục blog nếu nó không hoạt động. Đăng SSCCE của bạn cho thấy cách bạn đã thử nghiệm nó. – camickr

+0

SSCCE với hình ảnh được đăng. – Jeffrey

0

Các No Wrap Text Pane cũng cung cấp một giải pháp thay thế mà không yêu cầu gói các JTextPane trong một JPanel, thay vào đó nó sẽ ghi đè getScrollableTracksViewportWidth(). Tôi thích giải pháp đó, nhưng nó không hoàn toàn phù hợp với tôi - tôi nhận thấy rằng gói vẫn xảy ra nếu khung nhìn trở nên hẹp hơn chiều rộng tối thiểu của JTextPane.

Tôi thấy rằng JEditorPane là ghi đè getPreferredSize() để thử và 'sửa' mọi thứ khi chế độ xem quá hẹp bằng cách trả lại chiều rộng tối thiểu thay vì chiều rộng ưa thích. Điều này có thể được giải quyết bằng cách ghi đè getPreferredSize() một lần nữa để nói 'không, thực sự - chúng tôi luôn mong muốn kích thước ưa thích thực tế':

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); 
    }; 
} 
Các vấn đề liên quan