2016-02-20 87 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