2012-08-18 66 views
6

Vì vậy, tôi có JTextArea trên JPanel (BoxLayout). Tôi cũng có hộp phụ lấp đầy phần còn lại của JPanel. Tôi cần JTextArea của tôi để bắt đầu với single-line-height (tôi có thể quản lý điều đó), và để mở rộng và giảm khi cần thiết.Thay đổi kích thước từ JTextArea

Bọc từ được bật, tôi chỉ cần nó để điều chỉnh chiều cao của nó khi dòng mới được thêm/xóa.

Tôi đã thử với documentListener và getLineCount(), nhưng nó không nhận ra wordwrap-newlines.

Tôi muốn tránh gây rối với phông chữ nếu có thể.

Và, KHÔNG CÓ BẢNG SCROLL. Điều quan trọng là JTextArea được hiển thị hoàn toàn mọi lúc.

Trả lời

13

JTextArea có tác dụng phụ khá đặc biệt, trong điều kiện thích hợp, nó có thể phát triển theo cách riêng của nó. Tôi tình cờ gặp điều này khi tôi đang cố gắng thiết lập một trình soạn thảo văn bản hai dòng đơn giản (độ dài ký tự bị giới hạn trên mỗi dòng, với tối đa hai dòng) ...

Về cơ bản, với trình quản lý bố cục phù hợp, thành phần này có thể phát triển theo cách riêng của nó - nó thực sự có ý nghĩa, nhưng mất tôi bất ngờ ...

I'm so smallLook at me grow

Bây giờ trong Ngoài ra, bạn có thể muốn sử dụng một ComponentListener theo dõi khi các thành phần thay đổi kích thước, nếu đó là những gì bạn quan tâm ...

public class TestTextArea extends JFrame { 

    public TestTextArea() { 

     setLayout(new GridBagLayout()); 

     JTextArea textArea = new JTextArea(); 
     textArea.setColumns(10); 
     textArea.setRows(1); 
     textArea.setLineWrap(true); 
     textArea.setWrapStyleWord(true); 

     add(textArea); 

     setSize(200, 200); 
     setLocationRelativeTo(null); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     setVisible(true); 

     textArea.addComponentListener(new ComponentAdapter() { 

      @Override 
      public void componentResized(ComponentEvent ce) { 

       System.out.println("I've changed size"); 

      } 

     }); 

    } 


    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     new TestTextArea(); 
    } 

} 
Các vấn đề liên quan