2012-08-18 2 views
6

그래서 JPanel (BoxLayout)에 JTextArea가 있습니다. JPanel의 나머지 부분을 채우는 Box 필러도 ​​있습니다. JTextArea를 시작하려면 단일 행 높이 (관리 할 수 ​​있음)를 필요로하고 필요할 때 확장 및 축소해야합니다.JTextArea 줄 바꿈 크기 조정

단어 줄 바꾸기가 활성화되어 있습니다. 새 줄을 추가/제거 할 때 높이 조절이 필요합니다.

documentListener와 getLineCount()를 시도했지만 wordwrap-newlines을 인식하지 못합니다.

가능한 경우 글꼴을 망칠 필요가 없습니다.

그리고 스크롤이 없습니다. JTextArea가 항상 완전히 표시되어야합니다.

답변

13

JTextArea은 적절한 조건에서 다소 특별한 부작용이 있습니다. 나는 두 줄짜리 텍스트 에디터 (한 줄에 최대 2 줄의 글자 수 제한 문자)를 만들려고 할 때 실수로 우연히 발견했다 ...

기본적으로 올바른 레이아웃 관리자가 주어지면, 구성 요소의 크기가 변경 될 때 경우, 지금 추가

I'm so smallLook at me grow

, 당신은 모니터링 할 ComponentListener을 사용할 수 있습니다 ... 실제로 의미가 있지만, 나를 놀라게했다 - 그것의 자신의 협정으로 성장할 수 그게 니가 관심있어 ...

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(); 
    } 

}