为JButton制作动作监听器作为方法?

时间:2016-12-09 22:24:13

标签: java swing methods actionlistener

如何将此ActionListener转换为特定JButton的方法? (我知道它可以把它全部扔进一个方法但是......嗯。)

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

thx y' all,

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

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

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

public void myButtonMethod() {
    // code
}

再次感谢大家。
我下次会尝试更清晰,更快捷。

1 个答案:

答案 0 :(得分:2)

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

import javafx.event.ActionEvent;
import javafx.event.EventHandler;

public  class InputHandler extends Gui implements EventHandler<ActionEvent>{

    @Override
    public void handle(ActionEvent event) {
        if(event.getSource()== add){
            System.out.println("InputHandler works");
        }
    }
}

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

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        
}

或者你可以使用lambdas:

button1.addActionListener(new ActionListener() {

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

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

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

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

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

由您决定要明确您正在尝试做什么以及阻止您做什么。