【问题标题】:Making an Action Listener for a JButton as a method?为 JButton 制作动作监听器作为方法?
【发布时间】:2016-12-09 22:24:13
【问题描述】:

如何将这个ActionListener 变成特定JButton 的方法?
(我知道它可以把它全部扔到一个方法中,但是是的..hm。)

myJButton.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent e){
       //do stuff
    }
 });

谢谢你们,

编辑:感谢大家的快速回复,我的解释不是很清楚。

我研究了 lambdas 的使用,这几乎就是我的想法,尽管其他方法也很高兴知道。

myButton.addActionListener(e -> myButtonMethod());

public void myButtonMethod() {
    // code
}

再次感谢大家。
下次我会尝试更清楚和更快。

【问题讨论】:

  • “把它变成一种方法”是什么意思?请尽可能具体和清楚。例如,你已经有了一个方法——actionPerformed(...)
  • 创建一个方法,添加一个带委托的常规动作监听器,并从中调用你的方法。
  • 有了 lamda 或方法引用,它变得更加简洁:myButton.addActionListener(e -> doSomething()),或myButton.addActionListener(this::doSomethingWithEvent)
  • 因为我不在main 中工作,所以我无法在没有方法的情况下将它扔到一个类中,我试图弄清楚如何从上面列出的代码中创建一个方法,而不是仅仅把它扔到一个方法中——如果可能的话。
  • 也许是我,但我仍然不清楚您要做什么。而且,这种澄清太重要了,不能在 cmets 中发布。请编辑您的问题,更详细地描述,在代码中显示您正在尝试做什么以及您如何不成功。例如,为什么不按照@JBNizet 的建议去做呢?或者为什么不在上面的 actionPerformed 方法中调用方法?你被困在哪里了?你受什么限制?

标签: java swing methods actionlistener


【解决方案1】:

同样,您的问题仍不清楚。您上面的代码一个方法,可以将代码放入:

button1.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {
        // you can call any code you want here
    }
});

或者您可以从该方法调用外部类的方法:

button1.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {
        button1Method();
    }
});

// elsewhere
private void button1Method() {
    // TODO fill with code        
}

或者您可以从该代码调用内部匿名类的方法

button1.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {
        button1Method();
    }

    private void button1Method() {
        // TODO fill with code
    }
});

或者你可以使用 lambda:

button2.addActionListener(e -> button2Method());

// elsewhere
private void button2Method() {
    // TODO fill with code
}

或者您可以使用方法参考:

button3.addActionListener(this::button3Method);

// elsewhere
private void button3Method(ActionEvent e) {
    // TODO fill with code        
}

由您自己来弄清楚您到底想要做什么以及阻止您这样做的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多