2012-02-24 78 views
-2

我需要做的是传递一个参考部件的计时器的Java定时器与Swing组件

Timer timertest = new Timer(12000, new Timer()); 
............. 
{ 
    JButton button = new JButton("test"); 
    //How can I pass button reference in the Timer()? 
    //timertest.start(button); 
    timertest.start(); 
} 
............. 
class Timer implements ActionListener 
{ 
    public void actionPerformed(ActionEvent event) 
    { 
     System.out.println("button: "+button.getText()); 
     timertest.stop(); 
    } 
} 

如何传递的定时器()按钮参考?

+0

你解决这个问题,就像你会通过在Java中的任何引用无论是Swing或非GUI。例如,为什么不将该按钮设置为类字段,并通过构造函数或setter方法参数将引用传递给Timer对象? – 2012-02-24 17:12:30

+2

你也想重命名你的“Timer”类,因为核心Java中已经有一个Timer类(实际上是其中的两个),并且命名类同样是令人困惑的。 – 2012-02-24 17:23:41

+0

只是为了澄清:你的变量timertest是你自己的Timer类的一个实例,而不是java.util.Timer? – steffinchen 2012-02-24 17:37:51

回答

-1

我建议你编写自己的Timer子类(class MyTimer extends Timer),然后你可以在构造函数或自己的方法中传递按钮的引用。

例如:

class MyTimer extends Timer{ 
    public void start(JButton button){ 
    // use the button reference 
    super.start(); 
} 
+0

倒票。完全没有理由这样做,这是一个坏主意,因为没有Timer的行为被覆盖。更重要的是,他已经为Timer的ActionListener创建了一个类,这就是持有对JButton引用所需的全部内容。 – 2012-02-24 17:24:49

+1

现在我再次看了这个问题几分钟后,我意识到他正在谈论把参考资料传递给他自己的班级。我想他是在谈论java.util.Timer ...所以,是的,我同意,我的建议然后是一个坏主意 – steffinchen 2012-02-24 17:36:29