2016-02-20 78 views
0

我想從我的類A中使用JTextField在類B中。我已經做了一些研究,但我似乎無法找到答案。使用JTextField從一個類到另一個

這裏是我的A類看起來像:

public A extends JFrame implements ActionListener { 
    public A(){ 
    chrono = new JTextField("" + sec); // déclarer final car une classe interne va acceder à ce composant 
    chrono.setHorizontalAlignment(SwingConstants.CENTER); 
    chrono.setEditable(false); 
    chrono.setFont(new Font("Tahoma", Font.BOLD, 54)); 
    chrono.setText(""); 
    chrono.setBounds(631, 11, 127, 72); 
    contentPane.add(chrono); 
    chrono.setColumns(10); 
    } 
} 

我的B類是這樣的:

public class Actions extends Fenetre{ 
    ActionListener tache_timer; 

    tache_timer = new ActionListener(){ 
     public void actionPerformed(ActionEvent e){ 
      sec++; 
      String textRes = res.getText(); 
      if(sec == 3){ 
       res.setText("FAIL"); 

      } 

      if(sec == 6){ 
       /*On realise une pause de 1 sec */ 
       try { 
        TimeUnit.SECONDS.sleep(1); 
       } catch (InterruptedException e1) { 
        // TODO Auto-generated catch block 
        e1.printStackTrace(); 
       } 

       EcouteClavier_actionPerformed(e); 
       sec = 0; 

      } 
      chrono.setText("" + sec);// This JTextField is not working 


     } 
    }; 
} 

JTextField的我試圖使用被稱爲計時。如何使用計時,從A級到B級

回答

3

你有(至少)兩個chocies ...

你可以...

傳遞JTextField的參考,或直接或間接地通過A類的參考B

這通常不是一個好主意,因爲它開始以一種方式將代碼結合在一起,以後難以更改以及將代碼元素暴露給無法控制的更改(一旦我參考了文本字段,什麼是停止我從它刪除它的父容器?)

你可以...

使用Observer Pattern允許B通知,一些國家已經改變了有關各方。這種方式B不關心誰對他們感興趣或他們想要做什麼改變,使得它在未來變得更加靈活和容易使用和改變。

ActionListenerObserver Pattern的一個示例,它會通知您需要採取措施的某些事件。

您可以重複使用核心API中可用的許多EventListener中的任意一個或創建自己的。然後你會有A實現這個監聽器(直接或間接)並用B登記通知的興趣。當B的狀態變化,它會觸發一個事件通知發回有關各方...

不應 ...

很想將static