2013-06-09 5 views
0

나는 JTextPane의 html 기능을 사용하여 대화방을 만들고 있습니다. 사용자는 HTML 태그를 입력하여 화면에 이미지를 표시 할 수 있습니다. 스크롤 막대를 아래쪽에 두는 것이 문제가 있습니다. 이미JTextPane 이미지로드가 완료된 후 스크롤 막대를 아래쪽으로 설정하는 방법은 무엇입니까?

SwingUtilities.invokeLater(new Runnable() { 
    public void run() { 
     vertical.setValue(vertical.getMaximum()); 
    } 
}); 

을하려고하지만 스크롤 스크롤 아래로 다시 위로 스크롤합니다. 그것은 함수가 호출 된 후 그림 완료 로딩처럼 보인다. 나는 또한 시도했다 :

ClientScreen._chatMsgPane.setCaretPosition(_chatMsgPane.getDocument().getLength()); 

그러나 결과는 같다. 모든 이미지가로드 된 후 트리거되는 이벤트가 있습니까? 아니면이 문제를 해결할 다른 방법이 있습니까?

+0

btw 또한 Thread.sleep (450)을 호출하려고했습니다. after setText(); 그러나 이상하게 작동합니다. 내가 빨리 입력하면 화면이 더러워지며 메시지를 보낼 때마다 스크롤바가 위아래로 스크롤됩니다. 나는 그것이 잘 작동하지 않는다는 것을 의미합니다. –

+2

질문을 편집하여 설명하는 문제가있는 [sscce] (http://sscce.org/)를 포함하십시오. 대기 시간을 재생하기 위해 [URL]을 통해 게시 된 이미지에 액세스 할 수 있습니다 (http://stackoverflow.com/a/10862262/230513). – trashgod

답변

0

나는 이미지를로드하는 JTextPane에서 이것을 시도한 적이 없지만 Smart Scrolling이 도움이 될 수 있습니다.

SwingUtilities.invokeLater(new Runnable() { 
    public void run() { 
     int end = chatMsgPane.getDocument().getLength(); 
     try { 
      chatMsgPane.scrollRectToVisible(chatMsgPane.modelToView(end)); 
     } catch (BadLocationException e) { 
      throw new RuntimeException(e); // Should never get here. 
     } 
    } 
}); 

난 당신이 JTextPane의에 이미지를 addng하는 방법을 전혀 모르겠어요,하지만 당신은 스스로를로드하는 경우, 당신은 할 수 있습니다

0

JComponent에이 작업을 수행하도록 설계되었습니다 scrollRectToVisible라는 방법이있다 ImageIO.read으로 다른 스레드에로드 한 다음 읽기가 완료되면 맨 아래로 스크롤하십시오. 또는 이미지를 점진적으로 표시하려면 ImageIO에서 ImageReader를 가져온 다음 자신의 청취자를 addIIOReadProgressListener 메서드로 전달할 수 있습니다.

관련 문제