2016-08-17 3 views
0

내 응용 프로그램에서 콘솔로 사용한 텍스트 영역에 많은 텍스트를 인쇄하는 프로그램이 있습니다.javaFx java8에서 textArea 자동 스크롤을 비활성화하는 방법

실시간 건물 정보를 출력합니다.

기본값으로 스크롤하면 아래쪽이 멋지지만 스크롤 막대를 잡고 텍스트 영역에 텍스트가 계속 추가되는 동안 진행되는 내용을 확인하기 위해 텍스트 영역으로 이동하고 싶습니다. .

제 질문은 어떻게 스크롤 막대를 잡을 때 자동 스크롤을 비활성화 할 수 있습니까?

이상적인 시나리오는 다음과 같습니다 자동 스크롤 스크롤 막대가 돌아 오는 길에 끝까지 경우 비활성화 자동 스크롤 텍스트 끝으로 다시 이동하는 동안 아무것도 읽기의 어려움으로 스크롤 막대를 가지고 갈 때 항상.

이것은 내가 같은 문제가 있고,이 그것을 해결

private void run(final TextArea console) { 
    try { 
     console.clear(); 
     BufferedReader stdInput; 
     stdInput = new BufferedReader(new InputStreamReader(process.getInputStream())); 

     String line; 
     while ((line = stdInput.readLine()) != null) { 
      String feed = line; 
      Platform.runLater(() -> console.appendText(feed + "\n")); 
     } 
    } catch (Exception e) { 
     console.appendText(e.toString()); 
    } 
} 

답변

1

펜더 내 텍스트 영역입니다. 기본적으로 텍스트 업데이트 후/전 스크롤 위치를 복용하고 있는지 확인은 동일합니다 :

Platform.runLater(() -> { 
    double pos = console.getScrollTop(); 
    int anchor = console.getAnchor(); 
    int caret = console.getCaretPosition(); 
    console.appendText(feed + '\n'); 
    console.setScrollTop(pos); 
    console.selectRange(anchor, caret); 
}); 

주 : 추가 선택 :이되지에서는 AppendText()

EDIT로하지만, .setText()로 테스트 코드가 없으면 정의되지 않은 동작이 발생합니다.

+0

답장을 보내 주셔서 감사합니다. 비슷한 점을 보였지만 잘못 했으므로 콘솔에서 많은 일이 발생했습니다. 앵커를 클릭했을 때 자동 스크롤을 사용하지 못하게 할 수 있다고 생각했지만이 기능을 사용하기가 어려웠습니다. – LazerBanana

관련 문제