好的,如果我有以下代码:
protected void makebutton(String name){
JButton button = new JButton(name);
mypanel.add(button);
}
然后:
makebutton("Button1");
makebutton("Button2");
makebutton("Button3");
如何向其添加ActionListener。我将哪个名称用于ActionListener,尝试了很多组合但没有成功。
答案 0 :(得分:0)
你可以做的是让方法返回一个Button。多数民众赞成你可以在你的程序中使用其他位置的按钮变量。在您的情况下发生的是按钮被封装。因此您无法从代码中的任何其他位置进行访问。像这样的东西
private JButton makeButton(String name){
JButton button = new JButton(name);
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
// code action to perform
}
});
return button;
}
您可以在声明按钮时使用该方法
JButton aButton = makeButton();
panel.add(aButton);
更合理的方法是创建没有方法的按钮。
JButtton button = new JButton("Button");
panel.add(button);
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
// code action to perform
}
});
我真的不认为需要一种方法。
另一种选择是创建自定义侦听器类
public class GUI {
JButton button1;
JButton button2;
public GUI(){
button1 = new JButton();
button2 = new JButton();
button1.addActionListner(new ButtonListener());
button2.addActionListner(new ButtonListener());
}
private class ButtonListener implements ActionListener{
public void actionPerformed(ActionEvent e){
if (e.getSource() == button1){
// do something
} else if (e.getSource() == button2){
// something
}
}
}
}
答案 1 :(得分:0)
protected void makebutton(String name){
final String n = name;
JButton button = new JButton(name);
mypanel.add(button);
button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
if(n=="Button1"){
button1ActionListener();
}else if(n=="Button2"){
button2ActionListener();
}
}
});
}
您必须为每个按钮创建更多方法。 我认为peeskillet的第二个代码是好的。