2011-11-04 2 views
1
public void actionPerformed(ActionEvent evt) { 
    input = textField.getText(); 
    textArea.append(input); 
    textField.setText(""); 
    textArea.setCaretPosition(textArea.getDocument().getLength()); 
} 

이 메서드는 작동하고 메서드가 호출 될 때마다 변수 입력을 추가합니다.Java : textArea를 추가 할 수 없음

public void start(){ 

    System.out.println("Starting"); 
    int questionNumber = 0; 
    Counter counter = new Counter(); 
    counter = pickQuestions(); 
    System.out.println("here"); 
    textArea.append("**Applet**"); 
    System.out.println("now here"); 
    doQuestion(counter, questionNumber); 

} 

이 방법은 "지금 여기"다음 작동하지 않으며, "애플릿"를 추가하지 않습니다, 그러나 그것은 "여기"인쇄를 수행합니다.

아무도 이것에 대한 가능한 이유를 알고 있습니까, 아니면 충분한 정보를 제공하지 않았습니까? 감사합니다.

+0

예외 (null 포인터)가 있습니까? – DejanLekic

+1

'doQuestion' 블록 ('start'가 반환되지 않음을 의미)이 있으면 UI가 멈추고'textArea'는 업데이트되지 않습니다. 'doQuestion'을 호출 한 후'println'을 추가하여 호출이 지나간다는 것을 테스트하십시오. –

+0

인쇄가됩니다. 나는이 문제가 Software Monkey가 말한 것이라고 생각한다. – Blackvein

답변

5

두 번째 경우 GUI 이벤트 디스패치 스레드 이외의 스레드에서 GUI 구성 요소를 업데이트하는 것이 문제입니다. GUI 구성 요소의 조작은 EDT에서 수행해야합니다.

AWT에서 이것을 수행하려면 invokeLater()을 사용하여 EventQueue에 사용자 정의 Runnable을 삽입하십시오.

+0

흠 ... 나는 System.out.println을 클래스 파일 전체에 가지고 있기 때문에 textArea.append로 바꾸고 싶었다. – Blackvein

관련 문제