我有一個Jbutton,當按下時創建另一個按鈕並將新按鈕添加到面板。如何添加一個actionListener到新的按鈕?添加動作到由另一個JButton創建的JButton
例如:
JButton button = new JButton("lala");
button.addActionListener(this);
public void actionPerformed(ActionEvent event)
{
if (event.getSource() == button)
{
JButton newButton = new JButton("ahah");
newButton.addActionListener(this);
}
}
我要添加動作到newButton,我該怎麼辦呢?
編輯的代碼:
public void actionPerformed(ActionEvent event)
{
if (event.getSource() == button)
{
String name = tfOne.getText();
Icon flag = new ImageIcon("flag/"+name+".png");
JButton[] newButton = new JButton[click];
newButton[click-1] = new JButton(name, flag);
p2.add(newButton[click-1]);
newButton[click-1].addActionListener(new aListener());
p2.setLayout(new GridLayout(5+click,1)); //p2 is a panel that has been created
setSize(500,450+(click*20));
click++; //number of times the button is pressed
}
}
public class aListener extends MouseAdapter
{
public void mouseClicked(MouseEvent e)
{
tfOne.setText("lala");
}
}
的代碼是沒有得到很好的組織,但是這或多或少是我想做的事情
不,你的'aListener'類必須實現'ActionListnere',因爲你正在做'addActionListener(...)'或者你寫'newButton [click - 1] .addMouseListener(new aListener());'使它工作。 – 2012-03-22 15:50:54
啊的確如此。你在調用addActionListener,但它應該是addMouseListener在需要aListener類的按鈕上,或者你可以讓類實現ActionListener而不是擴展MouseAdapter,但是你需要改變方法public void actionPerformed(ActionEvent e)的鼠標點擊 – 2012-03-22 16:00:14
爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。但簡單來說:1)應用程序資源通常只能通過URL訪問,而接受'String'的'ImageICon'構造函數將其解釋爲'File'路徑。 2)看起來這個GUI的整個邏輯是可疑的。它打算實現什麼? 3)佈局更有可能兌現組件的首選尺寸,而不是尺寸。但要小心謹慎地設置首選大小,這不是輕言放棄。 4)添加一個'ActionListener'而不是'MouseListener'到按鈕。 – 2012-03-22 16:04:22