2013-06-27 85 views
0

我正在閱讀一些關於java中的事件調度線程的文章。因爲它意味着GUI的創建以及GUI組件的所有事件都應該在該線程中執行。如果看看在創建JFrame時在net beans IDE上生成的一些代碼,我可以同意這個評論的一部分。因爲它包含了一些代碼,直接GUI創建到EDT像了java.awt.EventQueue.invokeLater(新的Runnable().. ...關於事件調度線程

Ex: 
public static void main(String args[]) { 
    java.awt.EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      new Temp().setVisible(true); 
     } 
    }); 
} 

但是表達我們寫事件的處理方法呢沒有那種指揮語句。

Ex 
private void btnTodayActionPerformed(java.awt.event.ActionEvent evt) {           
    xxxxxxxxxxxxxxxxx ; 
    xxxxxxxxxxxxxxxxxxxxxxxxxxx; 
} 

在哪兒?或者是它由編譯器?? 請善待幫助我..這將是一些愚蠢的問題,做了...

回答

0

事件總是在EDT上提出的,因此您爲回調編寫的任何代碼也在EDT上,當您已經使用不同的線程時,您只需要invokeLater(或類似)(例如,長時間任務不應該在EDT上執行,因爲它們凍結整個界面,而不是它們應該在自己的線程上執行,並定期使用invokeLater更新界面)

1

由於南e意味着,在事件調度線程上引發所有UI事件(包括單擊事件)。

事件調度線程實際執行的是運行OS級消息循環來通知UI事件,然後將這些事件分派給相應的Swing組件。

+0

謝謝隊友.... – user2486322