将参数传递给ActionListener

时间:2016-03-22 00:49:51

标签: java swing actionlistener

public class start implements ActionListener {

    public void actionPerformed(ActionEvent aL) {
      method(arguments);

    }
  }

method(arguments) {
   //stuff
}

我希望JButton告诉程序使用参数" stuff"来启动一个方法。所以我把actionListener放在按钮上面,但是actionListener没有访问参数,我也不知道如何给它们(我查看了oracle文档并且无法弄明白)。我试过这个:

actionPerformed(ActionEvent aL, stuff) {

并且这不起作用,我收到错误

Compute.java:45: error: Compute.start is not abstract and does not override abstract method actionPerformed(ActionEvent) in ActionListener
  public class start implements ActionListener {
         ^

我尝试使用@Override,但根据编译器你无法覆盖它。那么,我如何将参数提供给ActionListener或者让方法在按钮之外但只在按下按钮后才开始工作,但是我在JFrame中使用了一个JProgressBar,其中按钮使用的方法是&#39 ; s定时器的东西,所以最好将参数传递给actionListener

1 个答案:

答案 0 :(得分:7)

您可以通过构造函数传递参数。但是,当然这意味着只有在创建ActionListener时才能传递参数。

public class Start implements ActionListener {

    SomeType arguments;
    public Start (SomeType arguments) {
         this.arguments = arguments;
    }

    public void actionPerformed(ActionEvent aL) {
        method(arguments);    
    }
}