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

此方法的工作原理是,每當調用方法時都會追加變量輸入。Java:不能附加文本區域

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

你得到任何(空指針)異常? – DejanLekic

+1

如果'doQuestion'塊(意味着'start'沒有返回),UI將被凍結並且'textArea'不會更新。在調用「doQuestion」之後添加一個'println'來測試它是否通過了該呼叫。 –

+0

它確實打印出來。我認爲這個問題是軟件猴子說: – Blackvein

回答

5

的問題是,在第二種情況下,你是從比GUI事件指派線程的線程上更新GUI組件。任何對GUI組件的操作都必須從EDT完成。

要在AWT中執行此操作,請使用invokeLater()將自定義Runnable注入EventQueue

+0

什麼嗯......因爲我的System.out.println的整個類文件,我想將其更改爲textArea.append的 – Blackvein