如何找出点击了哪个按钮?

Posted

技术标签:

【中文标题】如何找出点击了哪个按钮?【英文标题】:How can I find out which button was clicked? 【发布时间】:2011-11-22 12:34:56 【问题描述】:

我的按钮工作正常,我是每个按钮的监听器,如下所示:

for(int i = 0; i <= 25; ++i) 
    buttons[i] = new Button(Character.toString(letters[i]));
    buttons[i].addActionListener(actionListener);
    panel1.add(buttons[i]);

在这里你可以看到监听器被调用,我想知道我点击的是哪个按钮。有没有办法做到这一点?

ActionListener actionListener = new ActionListener() 
    public void actionPerformed(ActionEvent actionEvent) 
        System.out.println(actionEvent.getSource());
    
;

我需要一些方法来找到数组中的按钮。

【问题讨论】:

首先将源转换为按钮,然后获取标签 ((Button)actionEvent.getSource()).getLabel() ... 【参考方案1】:

ActionEvent 有一个 getActionCommand() 方法,它将获取 JButton 的 actionCommand 字符串。这通常也是文本(对于 JButtons)。

【讨论】:

+1 用于提及getActionCommand(),但尤其是对于“这通常它也是文本”(强调我的)。【参考方案2】:

试试这个

ActionListener actionListener = new ActionListener() 
    public void actionPerformed(ActionEvent actionEvent) 
        System.out.println(actionEvent.getActionCommand());
    
;

【讨论】:

哇非常感谢你 java 确实有很多东西但是有些功能很棒 试试this(然后点击ActionEvent继承的类的链接,并检查这些类的方法)。 JavaDocs - 对于这类东西非常方便。 ;)【参考方案3】:

为了得到标签,试试这个。

ActionListener actionListener = new ActionListener()

      public void actionPerformed(ActionEvent actionEvent) 
            JButton button = (JButton)actionEvent.getSource();
            String label = button.getLabel(); //Deprecated 

            String label2 = button.getText();
     
;

【讨论】:

我应该在哪里添加此代码?我希望它适用于我的所有按钮。【参考方案4】:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)                                          
    l1.setText("");//name of level what you want

    t1.setText(null);//text field what you want 

    t2.setText(null);//text field what you want

【讨论】:

不知道你在回答谁的问题,不过好像不是魔剑士问的问题。

以上是关于如何找出点击了哪个按钮?的主要内容,如果未能解决你的问题,请参考以下文章

如何找出点击了哪个 DataGridView?

PyQt5:查找点击了哪个 QPushButton

UIButton:多个按钮 - 如何检测事件并找到点击了哪个按钮”

jquery如何判断哪个按钮点击了?

jQuery:如何获取表单提交时点击了哪个按钮?

WPF,用后台代码创建了几个按钮,在运行的时候点击这些按钮,如何在点击按钮事件中知道点击的是哪个按钮呢