簡體   English   中英

一個用於許多JButton的ActionListener

[英]One ActionListener for many JButtons

我想將ActionListener添加到一組按鈕。 是否有任何類包裹按鈕? GroupJButtons這樣的東西還是更普遍的一組對象? 所以我可以為所有這些設置一個ActionListener 畢竟我並不關心按哪個按鈕我只想更改他的文本所以我需要做的就是將它轉換為JButton並更改文本。

整個過程會減少1或2中的代碼行(如果你使用循環)但我想這樣做,因為它聽起來邏輯上更好。

在這種情況下,您可以擴展AbstractAction類,並將相同的操作應用於許多按鈕。

  class MyAction extends AbstractAction {
       public MyAction(String text, ImageIcon icon,
                  String desc, Integer mnemonic) {
       super(text, icon);
       putValue(SHORT_DESCRIPTION, desc);
        putValue(MNEMONIC_KEY, mnemonic);
   }
   public void actionPerformed(ActionEvent e) {
        //do the action of the button here
    }
  }

然后,對於您希望發生相同事情的每個按鈕,您可以:

 Action myAction = new MyAction("button Text", anImage, "Tooltip Text", KeyEvent.VK_A);
 button = new JButton(myAction);

您可以使用它來創建每個按鈕

private JButton createButton(String title, ActionListener al) {
    JButton button = new JButton(title);
    button.addActionListener(al);
    return button;
}

這就是處理行動

public void actionPerformed (ActionEvent ae) {
    JButton button = (JButton)ae.getSource();
    button.setText("Wherever you want");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM