Java 来自另一个类的多个JButton actionlistener
大家好,我有一个关于如何创建一个单独的actionlistener类的问题 这是我现在的代码,工作正常,但不能满足我的需要Java 来自另一个类的多个JButton actionlistener,java,swing,jbutton,actionlistener,Java,Swing,Jbutton,Actionlistener,大家好,我有一个关于如何创建一个单独的actionlistener类的问题 这是我现在的代码,工作正常,但不能满足我的需要 for (int x = 0; x < buttons.length; x++) { buttons[x] = new JButton(name[x]); buttons[x].addActionListener(this); } public void actionPerformed(ActionEvent e) { if (e.getSo
for (int x = 0; x < buttons.length; x++) {
buttons[x] = new JButton(name[x]);
buttons[x].addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == buttons[0]) {
//command
} else if (e.getSource() == buttons[1]) {
//command
}
}
for(int x=0;x
所以基本上我希望这些按钮有一个来自另一个类的动作监听器 再说一次,你的问题有点含糊不清,缺乏背景知识。您已经知道,可以使用实现ActionListener的任何类作为按钮的ActionListener,也可以使用实现Action(或扩展AbstractAction)的任何类作为按钮的Action,很容易演示这一点:
import java.awt.event.ActionEvent;
import javax.swing.*;
public class ActionExample extends JPanel {
public static final String[] DAYS = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};
public ActionExample() {
for (String day : DAYS) {
add(new JButton(new MyAction(day)));
}
}
private static void createAndShowGui() {
ActionExample mainPanel = new ActionExample();
JFrame frame = new JFrame("ActionExample");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
class MyAction extends AbstractAction {
public MyAction(String name) {
super(name);
}
@Override
public void actionPerformed(ActionEvent evt) {
System.out.println("Button pressed: " + evt.getActionCommand());
}
}
但我担心这仍然不能回答任何我们还没有完全理解的问题。如果此答案(显示如何使用外部类作为操作(其功能为ActionListener))没有回答您的问题,请再次提供更多的上下文。更多详细信息,更多的背景上下文将帮助我们更好地理解您的问题。为了帮助改进您的上述问题(以及您以前的问题),请看一看。这是他那篇精彩的长篇文章的缩略版本。