2010-04-12 3 views
0

모두,자바 TextArea 스크롤 관련 문제

JTextArea 및 JScrollPane을 사용하여 문제가 발생합니다. 어떤 이유로 스크롤 창이 문서의 마지막 줄을 인식하지 못하는 것처럼 보이기 때문에 스크롤하기 전의 줄까지만 스크롤됩니다. 스크롤 막대는 문서의 줄이 textArea가 보여주는 줄 수보다 두 줄까지 표시 될 때까지 슬라이드 할 수있는 상태로 변경되지 않습니다 (한 번 더 크게 표시됨).

이전에이 문제를 겪은 사람이 있습니까? 좋은 해결책이 될 것입니다. (필자는 문서의 끝에 빈 줄을 추가하지 않아도됩니다. 새 줄을 추가 할 때마다 제거해야합니다). 여기

JFrame frame = new JFrame("Java Chat Program"); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

Container pane = frame.getContentPane(); 
if (!(pane.getLayout() instanceof BorderLayout)) { 
    System.err.println("Error: UI Container does not implement BorderLayout."); 
    System.exit(-1); 
} 

textArea = new JTextArea(); 
    textArea.setPreferredSize(new Dimension(500, 100)); 
    textArea.setEditable(false); 
    textArea.setLineWrap(true); 
    textArea.setWrapStyleWord(true); 
JScrollPane scroller = new JScrollPane(textArea); 
    scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); 
    pane.add(scroller, BorderLayout.CENTER); 

내가 textArea의에 새 줄을 추가하기 위해 사용하는 방법이다 : 당신의 도움에 대한

public void println(String a) 
{ 
    textArea.append(" "+a+"\n"); 
    textArea.setCaretPosition(textArea.getDocument().getLength()); 
} 

감사합니다,

나는 텍스트 영역과의 ScrollPane의 인스턴스 방법은 다음과

입니다

조나단

EDIT : 또한 사이드 노트로, 현재 코드로 수동으로해야합니다. 아래로 내려 가라. 필자는 println (line) 메소드의 setCaretPosition (doc.getLength())이 라인이 입력 된 후 자동으로 페이지를 맨 아래로 설정한다고 가정했습니다 ... 그럴까요? 아니면 다르게 처리해야합니까?

답변

2

문제는 textArea.setPreferredSize(new Dimension(500, 100));

가 제거됩니다. 스크롤 구획의 perferredSize 또는 프레임 크기를 대신 설정하십시오.

+0

대단히 감사합니다. =) – Jonathan

0

이 방법이 해결책입니까? 나는 그것을 시험하지 않았으니 제발 나를 죽이지 마세요.

scroller.getVerticalScrollBar().setValue(pane.getVerticalScrollBar().getMaximum()); 
+0

롤 (Lol), 나에게 해결책을주기 위해 시간을내어 머리를 찢지는 않을 것이다. 나는 사람들이 배은망덕 한 때 그것을 싫어. 고마워요.하지만 Pryrolistical의 솔루션이 효과가있었습니다. – Jonathan