2014-12-24 3 views
0

그럼 제가 가정 해 봅시다 JEditorPane.자바 업데이트 구성 요소를 동적으로

나는이

public void addText(String s) 
jeditorpane.setText(jeditorpane.getText() + s); 
} 

같이 간다 addText (문자열 S)라는 무효가 지금은 버튼이있을 것이다 가지고 누르면 텍스트 파일의 모든 라인을 읽고 텍스트 편집기에 기록합니다 상자에 버퍼링 된 리더를 사용하고 텍스트를 한 줄씩 추가합니다.

왜 버튼을 누르면 응용 프로그램이 몇 초 동안 정지 한 다음 모든 항목을 한 번에 게시합니다. 그들의 방법은 모든 것을 동적으로 게시하고 하나씩 게시하는 것을 볼 수 있습니다. 그것이 코드 작성 방법입니다.

나는 당신에게 도움이 될 수 있습니다 그 유래에서 일부 소스가 : 왜 그

답변

5

있는 버튼을 위해 동결 응용 프로그램을 눌렀을 때 몇 초 후에 모든 것을 한 번에 올릴 수 있습니다.

스윙 이벤트 스레드를 느리게 읽고 쓰레드를 묶어 GUI로 그려 사용자와 상호 작용하는 등 작업을 수행하지 못하게합니다.

동적 인 글을보고 게시하는 것을 하나씩 볼 수있는 방법입니다. 그것이 코드 작성 방법입니다.

예, 가장 쉽게 SwingWorker를 사용하여 얻은 배경 스레드를 사용하십시오. Concurrency in Swing을 읽으십시오.

일반적인 SwingWorker, 특히 SwingWorker<Void, String>을 사용하고 게시/프로세스 메소드 쌍을 사용하여 각 행을 읽을 때 문자열을 텍스트 구성 요소로 푸시하려는 경우가 많습니다.


편집 : 지금 당신은 당신의 질문에 배치 링크 모두 이미이 질문을 왜 궁금한데이 솔루션을 언급 한 것을 알 수있다.

+0

그들은 둘 다 나를 위해 작동하지 않았기 때문에 – Bug

+2

@Master : 그럼 당신 질문에 포함되어야합니다. 당신은 당신이 시도한 것을 보여 주어야하고, 무엇이 잘못 되었는가를 설명하고, 당신의 시도에 대해 노력하지 않아야합니다. 그 밖의 모든 것은 우리가 이전에 설명했던 것을 역류시키는 것입니다. "작동하지 않았다"는 말은 우리가 당신이 앞으로 나아갈 수 있도록 우리가 사용할 수있는 것을 거의 알려주지 않습니다. 귀하의 설명에 구체적이고 상세하게 기재하십시오. 질문 업데이트를 고려하십시오. –