2016-12-09 36 views
-3

如何將此ActionListener轉換爲特定JButton的方法?
(IM意識到它可能把它全部在方法,但yeah..hm。)爲JButton做一個Action Listener作爲一種方法?

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

THX你們,

編輯:感謝大家的快速反應,我解釋WASN」非常清楚。

我研究了lambda的使用方法,它幾乎是我想到的,儘管其他方法也很棒。

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

public void myButtonMethod() { 
    // code 
} 

再次感謝大家。
下次我會盡量做得更清晰快捷。

+2

你是什麼意思的「成爲一種方法」?請儘可能具體清楚。例如,你已經有一個方法 - 'actionPerformed(...)' –

+0

創建一個方法,添加一個常規的動作偵聽器w /委託,並從中調用你的方法。 – dasblinkenlight

+1

對於lamda或方法引用,它變得更加冗長:'myButton.addActionListener(e - > doSomething())'或myButton.addActionListener(this :: doSomethingWithEvent)' –

回答

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   
} 

你來嘗試上究竟什麼是你正在試圖做的,什麼是阻止你做明確。