2016-10-26 2 views
0

JScrollPane 안에 패널이 있고 서비스에서 데이터가 수신되면 패널에 구성 요소가 동적으로 채워집니다. 패널은 GridBagLayout을 사용합니다 (단, 이는 관련이 없어야 함). 서비스에서 되돌아 오는 각 레코드에 대해 동적으로 여러 구성 요소를 만들어 패널의 맨 아래에 추가합니다. 모든 것이 잘 작동하지만 문제는 다음과 같이 각 레코드에 대해 작성되는 JTextArea에가, 마지막에 추가 JTextArea에 아래로 스크롤하고 보여 주 JScrollPane의 강제한다는 것입니다 :JTextArea는 부모 JScrollPane을 아래로 스크롤하도록합니다.

scroll pane forced down

내가 할 수있는 모든을 해제하려 JTextArea에 아래로 바보로 생각하지만, 여전히 스크롤바를 이동 나는 그것을 막을 수있는 방법

JTextArea descriptionArea = new JTextArea(project.getDescription().replace("<br>", "\n")); 
descriptionArea.setEditable(false); 
descriptionArea.setFont(thumbnailLabel.getFont()); 
descriptionArea.setLineWrap(true); 
descriptionArea.setWrapStyleWord(true);  
descriptionArea.setFocusable(false); 
descriptionArea.setRequestFocusEnabled(false);  
DefaultCaret caret = (DefaultCaret) descriptionArea.getCaret(); 
caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE); 

도움이되지 않습니다? JTextArea를 JLabel로 바꾸려고 시도했지만 제대로 작동합니다. 그러나 JLabel을 텍스트로 바꾸는 것은 좋지 않습니다. 어떤 아이디어든지 높게 평가 될 것입니다. 당신이 구성 요소를 추가하기 전에

Point p = srcollPane.getViewport().getViewPostition(); 
// add the components to the panel in the viewport of the scrollpane 
scrollpane.getViewport().setViewPosition(p); 

지금 스크롤이 원래 위치로 다시 설정해야합니다

답변

2

당신이 뭔가를 할 수 있습니다.

+0

감사합니다. 이전에이 솔루션을 사용해 보았지만 제대로 작동하지 않았습니다. SwingUtilities.invokeLater() 호출 안에 래핑 된 setViewPosition을 수행 할 때 작동하도록했습니다. –

관련 문제