2010-04-08 14 views
3

마지막 줄 (텍스트 영역의 높이가 제공 할 수 있음)에 도달하여 사용자가 새 줄을 시작하려고 할 때 JTextArea의 크기를 조정 (세로로 확장)하고 싶습니다. MSWord의 텍스트 상자와 같습니다.자동 크기 조정 JTextArea

나는 getLineCount()을 사용하고 필요한 경우 JTextArea의 새 높이를 결정할 생각을 가지고 있습니다. 이것을 구현하기위한 더 나은 접근법에 대해 알고 있습니까?

답변

8

실제로 모든 텍스트 줄을 볼 수 있도록 JTextArea은 항상 올바른 크기를 유지합니다. 당신이 경험 한 것은 아마 JScrollPane에 텍스트 영역을 감쌌다는 것입니다. 스크롤 창을 생략하고 텍스트 영역을 컨테이너의 직접 하위로 만들면됩니다.

또 다른 해결책은 텍스트 영역의 크기 조정 이벤트를 수신하고 이에 따라 스크롤 창 크기를 조정하는 것입니다. 이렇게하면 특정 크기로 성장한 다음 스크롤 막대를 표시하기 시작할 수 있습니다 (예 : 텍스트 영역에 500KB의 텍스트를 붙여 넣는 경우).

+0

JPanel에 JTextArea를 추가하기 만하면됩니다. 크기를 설정하는 것입니까? 하지만 크기를 설정하지 않으면 나타나지 않습니다. – Halo

+0

텍스트 영역이 커지도록 JPanel의 크기를 설정하기 만하면됩니다. 텍스트 영역은 텍스트의 크기에 맞게 자동으로 조정됩니다. –

+0

글쎄, 작동하지 않았다. BTW 나는 JTextPane을 사용하여 전환했지만 여전히 확장 문제가 계속됩니다 – Halo

1

나는 동일한 문제가있었습니다. 내 테스트에서 JTextArea가 동적으로 크기를 설정한다고 생각하지 않습니다. 대신, 그 크기는 컨테이너 (JPanel 경우)에 의해 제한되는 것 같습니다. 그러나 JTextArea는 포함 된 텍스트에 따라 기본 크기를 변경합니다. 문서에서 :

java.awt.TextArea에는 기본 크기를 결정하는 데 사용되는 두 개의 속성 행과 열이 있습니다. JTextArea는 이러한 속성을 사용하여 java.awt.TextArea에서 제공하는 기능과 일치하도록 JScrollPane 내부에 배치 될 때 뷰포트의 기본 크기를 나타냅니다. JTextArea는, JScrollPane의 내부에서 올바르게 기능하도록 (듯이), 모든 텍스트를 표시하기 위해서 필요한 사이즈를 기본으로하고 있습니다. 행 또는 열의 값이 제로의 경우, 그 축으로 따른 바람직한 사이즈가, 같은 축으로 따른 뷰포트의 적절한 사이즈에 사용됩니다.

0

나는 동일한 문제가있어서, 나는 JTextArea를 JScrollPane에 넣고 JTextArea의 선호 크기를 설정했다. 나는 그것이 문제의 원인이라고 생각한다.

올바른 해결책은 JTextArea를 JScrollPane에 넣고 JTextArea의 기본 크기를 만지지 않는 것입니다. 대신 JScrollPane을 설정하십시오.