2017-03-15 1 views
0

JTextArea의 getLineCount 함수의 반환 값을 기준으로 ScrollPane에서 높이를 설정하려고합니다. Dimension of ScrollPane에서 값을 높이로 설정하면 정말 작습니다. 내가 예상 한 것과 가장 가까운 결과를 얻기 위해 * 20을 더했습니다. 그러나이 트릭을 사용하면 getLineCount의 수가 많을수록 정확도가 떨어지므로 JScrollPane의 높이가 원하는 것보다 커집니다.JTextArea 줄 수 값을 높이 height_JAVA로 변환하는 방법

메트릭을 변환하는 수식이 필요합니다. 그러나 나는 그들이 int 값인 경우를 제외하고 어떤 메트릭을 리턴/사용하는지 정확히 알지 못합니다.

이 두 가지를 변환 할 내장 라이브러리가있는 경우 유용 할 수도 있습니다. 이 문제와 관련하여 많은 온라인 게시물이 보이지 않습니다. 누구든지이 문제가 발생 했습니까?

int height= textArea.getLineCount(); 
JScrollPane scrollPane = new JScrollPane(textArea); 
scrollPane.setPreferredSize(new Dimension(1, height* 20)); 
+2

무엇이 요점입니까? 스크롤 구획의 사이즈를 텍스트 영역의 사이즈로하려고하면 (자), 스크롤 구획은 필요 없습니다. – camickr

+0

['JTextArea # setRows'] (https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextArea.html#setRows-int-) – MadProgrammer

+0

@camickr 질문을 올리는 것을 이해합니다. 일반적으로 스크롤 창에서 특정 높이를 설정하는 것은 무의미하다는 것을 알고 있습니다. 그러나 JTextArea의 전체 텍스트를 보려면이 단계에서 특정 높이를 설정해야하며 앞으로 특정 높이로 줄이는 기능을 구현할 것입니다. 일단 축소되면 scrollpane에서 scrollbar를 사용합니다. 장래의 구현을 용이하게하기 위해서,이 단계에서는 스크롤 바를 사용 불가능하게하는 스크롤 판을 사용합니다. –

답변

3

이 점은 무엇입니까? 스크롤 구획의 사이즈를 텍스트 영역의 사이즈로하려고하면 (자), 스크롤 구획은 필요 없습니다.

크기를 관리하지 마십시오. setPreferredSize() 메서드를 사용하지 마십시오.

대신 JTextAreasetRows(...) 메서드를 사용하여 스크롤하지 않고 텍스트 영역에 표시 할 줄 수를 정의 할 수 있습니다.

이렇게하면 텍스트 영역에서 텍스트 영역의 행과 글꼴을 기반으로 원하는 크기를 결정할 수 있습니다. 스크롤 구획은 자동적으로 텍스트 영역의 적절한 사이즈에 맞추어집니다.

데이터 행이 더 추가되면 스크롤바가 나타납니다.

+0

귀하의 조언에 감사드립니다. 그러나, 나는 textArea.setRows (textArea.getLineCount()); 그럼 난 textArea.getRows()에서 행을 가지고; 그런 다음 textArea.setAlignmentX (rows)로 textArea의 높이를 설정합니다. .. scrollpane에서 setPreferredSize를 제거했고 말했듯이 스크롤 창은 textArea 높이로 조정됩니다. 고맙습니다! –

1

당신이하는 방식으로 각 행의 높이가 1 픽셀 인 것처럼 높이 값을 설정합니다.

줄 번호에 Graphics.getFontMetrics().getHeight()을 곱하면 그래픽에 글꼴이 설정되어 있습니다. 그것은 당신의 문제를 해결해야합니다

+0

빠른 응답 감사합니다. Font 클래스에는 getHeight 함수가 없습니다. getSize ..라는 뜻입니까? 또는 JTextArea의 텍스트를 의미합니다! –

+0

@ In-youngChoung 아니요, getSize가 아닙니다. 내 대답을 정정했습니다 – ControlAltDel

+0

@ In-youngChoung, 죄송합니다. 다시 조정. 지금 당장 생각해. – ControlAltDel