首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为方法创建的按钮添加操作侦听器

为方法创建的按钮添加操作侦听器
EN

Stack Overflow用户
提问于 2013-12-14 18:53:11
回答 2查看 1.5K关注 0票数 0

好的,如果我有以下代码:

代码语言:javascript
代码运行次数:0
运行
复制
protected void makebutton(String name){

         JButton button = new JButton(name);

         mypanel.add(button);
     }

然后:

代码语言:javascript
代码运行次数:0
运行
复制
makebutton("Button1");
makebutton("Button2");
makebutton("Button3");

如何才能将ActionListener添加到它们中。我应该使用哪个名称来表示ActionListener,尝试了许多组合,但都没有成功。

EN

回答 2

Stack Overflow用户

发布于 2013-12-14 19:13:56

你可以做的就是让方法返回一个Button。这样你就可以在程序中的其他地方使用按钮变量了。在您的例子中发生的情况是按钮被封装。因此,您不能从代码中的任何其他位置访问。像这样的东西

代码语言:javascript
代码运行次数:0
运行
复制
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;
}

您可以在声明按钮时使用该方法

代码语言:javascript
代码运行次数:0
运行
复制
JButton aButton = makeButton();
panel.add(aButton);

更合理的方法是在没有方法的情况下创建按钮。

代码语言:javascript
代码运行次数:0
运行
复制
JButtton button = new JButton("Button");
panel.add(button);

button.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
        // code action to perform
    }
});

我真的不认为有必要使用一种方法。

另一种选择是创建自定义监听器类

代码语言:javascript
代码运行次数:0
运行
复制
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
            }
        }
    } 
}
票数 0
EN

Stack Overflow用户

发布于 2013-12-14 22:04:25

代码语言:javascript
代码运行次数: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的第二个代码是最好的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20582366

复制
相关文章

相似问题

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