[英]How to add multiple ActionListeners for multiple buttons in Java Swing
我知道如何為它創建一個按鈕和一個動作監聽器。 但是我希望它們有幾個按鈕和actionListeners,它們可以執行彼此無關的單獨操作。
例:
protected JButton x;
x = new JButton("add");
x.addActionListener(this);
public void actionPerformed(ActionEvent evt) { //code.....}
現在我想要其他按鈕可能有不同的功能,如減法,乘法等,請建議。 謝謝
關於什么:
JButton addButton = new JButton( new AbstractAction("add") {
@Override
public void actionPerformed( ActionEvent e ) {
// add Action
}
});
JButton substractButton = new JButton( new AbstractAction("substract") {
@Override
public void actionPerformed( ActionEvent e ) {
// substract Action
}
});
使用內部類:
x = new JButton("add");
x.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
//your code here
}
}
);
您可以使用ActionEvent.getSource()
來確定源並相應地執行操作,也可以為每個源定義不同的ActionListeners
。
怎么樣...
protected JButton x, z, a, b,c;
x = new JButton("add x");
z = new JButton("add z");
a = new JButton("add a");
b = new JButton("add b");
c = new JButton("add c");
x.addActionListener(this);
z.addActionListener(this);
a.addActionListener(this);
b.addActionListener(this);
c.addActionListener(this);
然后
public void actionPerformed(ActionEvent evt)
{
if (evt.getSource()==x)
{
//do something
}
else if (evt.getSource()==z)
{
//do something
}
else if (evt.getSource()==a)
{
//do something
}
else if (evt.getSource()==b)
{
//do something
}
else if (evt.getSource()==c)
{
//do something
}
}
這對我來說總是有用,但說實話,我不確定這是不是不好的做法
您只需要每次都創建ActionListener
新實例。 BTW由於很多原因,建議使用Action
代替。
這里有一個很好的資源,它也解釋了為什么你應該使用Action over ActionListeners,一個名為How to Use Actions的Java教程
編輯 :@fmucar是對的,你可以在一個ActionListener中完成所有操作。 雖然具有單獨的功能操作允許您獨立地重用它們。
您可以創建不同的動作偵聽器實例,而不是使用您的類:
x.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e)
{ ... }
});
還有其他一些方法來創建動作偵聽器,就像任何類一樣,但對於簡短的動作,這個(匿名類)是一種方便的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.