我想添加一個ActionListener
到一組按鈕。 是否有任何包裝按鈕的類?像GroupJButtons
或更一般的對象組?所以我可以爲他們設置一個ActionListener
。 畢竟我並不在乎哪個按鈕被按下,我只是想改變他的文字,所以我需要做的就是將它轉換爲JButton
並更改文字。許多JButton的一個ActionListener
整個過程會減少1或2(如果你使用循環)的代碼行,但我想這樣做,因爲它聽起來邏輯上更好。
我想添加一個ActionListener
到一組按鈕。 是否有任何包裝按鈕的類?像GroupJButtons
或更一般的對象組?所以我可以爲他們設置一個ActionListener
。 畢竟我並不在乎哪個按鈕被按下,我只是想改變他的文字,所以我需要做的就是將它轉換爲JButton
並更改文字。許多JButton的一個ActionListener
整個過程會減少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);
非常好的解決方案!但是,這似乎有點矯枉過正?只是爲了一組按鈕? – 2012-12-09 14:46:00
@Arno:它對我來說似乎並不過分。 1+爲好的答案。如果所有按鈕都具有相同的文本和操作,則可以創建一個MyAction對象並使用它創建多個按鈕。現在,如果按鈕的標題不同,則可能需要創建一個ActionListener,然後將其添加到多個按鈕。 –
@HovercraftFullOfEels好吧,很高興知道! – 2012-12-09 14:53:26
您可以使用它來創建每個按鈕
private JButton createButton(String title, ActionListener al) {
JButton button = new JButton(title);
button.addActionListener(al);
return button;
}
而這個處理動作
它是有許多按鈕做* *確切同樣的事情非常不尋常的GUI。什麼是用例? –