首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有办法通过addActionListener访问这段代码

有没有办法通过addActionListener访问这段代码
EN

Stack Overflow用户
提问于 2012-11-04 20:24:14
回答 4查看 157关注 0票数 3
代码语言:javascript
运行
复制
JPanel p = new JPanel();
    p.setLayout(new GridLayout(4, 4, 5, 5));
    String[] buttons = {
        "1", "2", "3", "/", "4",
        "5", "6", "*", "7", "8", "9", "-", "0", ".", "=", "+"
    };
    for (int i = 0; i < buttons.length; i++) {
            p.add(new JButton(buttons[i]));
   add(p);

这段代码产生了一个很好的计算器布局,有没有一种方法可以addActionListener到每个按钮,同时保持这个布局,我的意思是不是像这样对每个按钮都这样做。

代码语言:javascript
运行
复制
JButton button1 = new JButton("1");
     button1.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent event) {
// interesting code for button1 goes here
      }
   });
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-04 23:00:40

我是用这个代码做的..。

代码语言:javascript
运行
复制
   String[] buttons = {
        "1", "2", "3", "/", "4",
        "5", "6", "*", "7", "8", "9", "-", "0", ".", "=", "+"
    };

    Action[] allActions = new Action[buttons.length];

    for ( i = 0; i < buttons.length; i++) {

        allActions[i] = new ButtonAction(buttons[i],i);

        JButton button = new JButton(allActions[i]);

           panel.add(button);


        }

使用类ButtonAction,如下所示

代码语言:javascript
运行
复制
  public class ButtonAction extends AbstractAction 
  {
int i;
   public ButtonAction(String text, int i) {
    super(text);
    this.i = i;
    }
   public void actionPerformed(ActionEvent e) {
    /* you can put any action here. either make the action depend on array value or 
      the string text */
   System.out.println(i);

   }
 }
票数 2
EN

Stack Overflow用户

发布于 2012-11-04 20:28:08

是的,不是String数组,而是Action实例数组。每个这样的Action都有一个名称,并且也是一个ActionListenerhere引用了几个例子。

票数 4
EN

Stack Overflow用户

发布于 2012-11-04 20:30:55

代码语言:javascript
运行
复制
for (int i = 0; i < buttons.length; i++) {
   JButton button = new JButton(buttons[i]);
   button.addActionListener(new MyAction());
   p.add(button);
}

哪里

代码语言:javascript
运行
复制
class MyAction extends AbstractAction {
   @Override
   public void actionPerformed(ActionEvent event) {
   ...
   }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13218483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档