2016-07-31 9 views
0

내가 exmaple를 들어, 텍스트 영역이 컨텐츠와 함께 성장할 수 있도록 노력되었습니다자바 FX - TextArea에 문자 높이로 성장합니다 (행/라인)

텍스트 영역에 한 줄, 지금은 사용자가 작성 유지가하고 TextArea의 오른쪽 테두리에 도달하고 텍스트가 바뀝니다. 이제는 두 번째 줄 (내부적으로 '\ n'을 사용하여 줄 바꿈되지 않음)이 생겼습니다. 이제 텍스트 필드가 한 줄 더 늘어나기를 원합니다. 난 이미 시도 무엇

:

Text text = textArea.lookup(".text").getLocalBounds.getHeight() 

항상이 같은 상관없이 내가이 없다 어떻게 많은 라인 반환합니다.

textArea.getPrefRowCount() 

는 관계없이 항상 내가해야합니까 얼마나 많은 라인

1

을 반환하지 않습니다.

아무에게도이를 달성하는 방법에 대한 아이디어가 있습니까? 누군가가 실용적인 예를 원한다면 Skype는 채팅에서 그런 종류의 메커니즘을 사용합니다.

인사말 Marcel

+0

[TextArea.wrapText] (https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/TextArea.html#wrapTextProperty)를 테스트 했습니까? – mojtab23

+0

나는 텍스트를 이미 포장하고 있지만 textareasize와는 아무런 관련이 없습니다. 너비가 아니라 높이를 변경하고 싶습니다. – ScriptKiddy

답변

0

Text text = (Text) textArea.lookup(".text"); 
textArea.setPrefHeight(text.boundsInParentProperty().get().getMaxY()); 

작품은하지만 매우 좋은하지 않습니다.

-1

너무 어렵지 않아야합니다. 아마도 @Override 메서드는 textArea이어야합니다. 필요한 것 또는 고정 된 값에 따라 행 수를 반환해야합니다.

이 유 어떤 Swing 구성 요소와 같은 JFrame, JPanel, JLabel, JButton에 발생할 수있는 일반적인 "문제"등도가 높은 가 정확하게 크기를 조정하기 위해 방법을 선호 오버라이드 (override)하는 것이 좋습니다 이러한 구성 요소에 또한

입니다 대신 setBounds을 사용하십시오.

또한 아마도 setPreferredRowCount() 메서드는 자신을 업데이트하지 않으므로 크기가 항상 업데이트되는지 확인하기 위해 루프 (또는 스레드하지만 전화하지 않고 싶습니다.)에서 호출해야합니다. 같은 뭔가 :

편집 :

while(inputNeeded) { 
    if(textArea1.textChanged) { 
     if(text1.length > 10) { 
      textArea1.setPreferredRowCount(3); 
     } else if(text1.length > 20) { 
      textArea1.setPreferredRowCount(4); 
     } 
    } 
} 

... 등등. 내 잘못, 당신은 정말로 아무것도 무시할 필요가 없습니다. 이런 루프를 사용해보십시오. 스크롤 막대가 도청 유지하기 때문에

+0

방금 ​​말한대로 따라야하는 것이 무엇인지 잘 모르겠습니다. – ScriptKiddy

+0

SetPrefferedRowCounts는 인수로 정수를 취합니다. java에 대한 깊은 이해가 없었으므로 구성 요소의 핵심 부분에 대해 너무 많이 알지 못합니다. – ScriptKiddy

+0

맞습니다. 지금 바로 편집 할 것입니다. –