【问题标题】:Passing Arguments to ActionListener将参数传递给 ActionListener
【发布时间】:2016-03-22 00:49:50
【问题描述】:
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 按钮所在的按钮使用该方法作为计时器所以最好将参数传递给 actionListener

【问题讨论】:

  • 欢迎来到 StackOverflow!您可能想尝试将您的代码发布为minimal reproducible example
  • 这种东西是 OOP 101,应该在尝试 GUI 之前很久就解决掉。

标签: java swing actionlistener


【解决方案1】:

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

public class Start implements ActionListener {

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

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

【讨论】:

    猜你喜欢
    • 2012-04-13
    • 2012-02-23
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    • 1970-01-01
    • 2019-09-27
    相关资源
    最近更新 更多