【问题标题】: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() ...

标签: java swing button actionlistener


【解决方案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
}

【讨论】:

  • 不知道你在回答谁的问题,不过好像不是魔剑士问的问题。
猜你喜欢
  • 2019-04-19
  • 1970-01-01
  • 2014-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多