button1.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent ae) {
exite.setEnabled(true);
}
});
button2.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent ae) {
exite.setEnabled(true);
}
});
button3.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent ae) {
exite.setEnabled(true);
}
});
我这里有3个按钮,但它们正在做同样的事情。它需要一些代码空间。如何将它们全部分组并分配给一个ActionListener?
像这样的东西。我不知道应该怎么做。
button1.button2.button3.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent ae) {
exite.setEnabled(true);
}
});
答案 0 :(得分:6)
首先将ActionListener
分配给另一个变量:
ActionListener listener = new ActionListener() {
...
};
button1.addActionListener(listener);
button2.addActionListener(listener);
button3.addActionListener(listener);
毕竟这只是一个参考 - 这里唯一的“特殊”事情是使用匿名内部类来创建ActionListener
的实例。
如果您想要对所有按钮执行多项操作,您可能希望将它们放入集合中,而不是为它们设置三个单独的变量。
答案 1 :(得分:2)
Juste创建一个变量: - )
ActionListener listener = new ActionListener(){
@Override
public void actionPerformed(ActionEvent ae) {
exite.setEnabled(true);
}
};
button1.addActionListener(listener);
button2.addActionListener(listener);
button3.addActionListener(listener);
答案 2 :(得分:2)
ActionListener listener = new ActionListener(){
@Override
public void actionPerformed(ActionEvent ae) {
exite.setEnabled(true);
}
};
button1.addActionListener(listener);
button2.addActionListener(listener);
button3.addActionListener(listener);
答案 3 :(得分:0)
在班级中实施ActionListener
public class YourClass implements ActionListener
这应该使您必须在一个可以处理所有操作的地方实施actionPerformed
方法。
然后,您的addActionListener
行应成为:
button1.addActionListener(this);
button2.addActionListener(this);
等
然后使用:
public void actionPerformed(ActionEvent event) {
if(event.getSource() == button1 || event.getSource() == button2 || event.getSource() == button3) {
exite.setEnabled(true);
}
}
答案 4 :(得分:0)
您可以创建一个名为event的类,该类实现JButtons的ActionListener。然后使用参数getCommand()方法获取JButton的文本,并根据JButton的文本为所有按钮创建if语句,代码为:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*
public class MultipleJButtons extends JFrame {
JButton button1, button2, button3;
public static void main(String args[]) {
MultipleJButtons gui = new MultipleJButtons();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.pack();
gui.setTitle("Multiple Buttons");
gui.setVisible(true);
}
public MultipleJButtons() {
event e = new event();
setLayout(new FlowLayout());
button1 = new JButton("Button 1");
add(button1);
button1.addActionListener(e);
button2 = new JButton("Button 2");
add(button2);
button2.addActionListener(e);
button3 = new JButton("Button 3");
add(button3);
button3.addActionListener(e);
}
public class event implements ActionListener {
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if (command.equals("Button 1")) {
System.out.println("You pressed button 1");
} else if (command.equals("Button 2")) {
System.out.println("You pressed button 2");
} else if (command.equals("Button 3")) {
System.out.println("You pressed button 3");
}
}