2
  @Override
  public void actionPerformed(ActionEvent e) {
      if (e.getSource() == thirdBtn) {
          //System.out.println("Third Button Click");
          System.out.println(e.getSource()+" Click");
      }
  }

在上面的代码中,我想知道是否不这样做:

//System.out.println("Third Button Click");

如果我能做这样的事情:

System.out.println(e.getSource()+" Click");

但是代码输出:

BlackJack.OverBoard$BlackJackButton[,440,395,100x25,alignmentX=0.0,alignmentY=0.5,
    border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource@7a3d8738,
    flags=16777504,maximumSize=,minimumSize=,preferredSize=,
    defaultIcon=,disabledIcon=,disabledSelectedIcon=,
    margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],
    paintBorder=false,paintFocus=true,
    pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,
    text=Change,defaultCapable=true] Click

我不想要这个,我想知道如何获取JButton名称并在点击时输出。

编辑:

有些人很困惑。当我说“名字”时(也许这是错误的词),我的意思是说你初始化一个JButton

JButton btnExample = new JButton();

我想要它,以便当您单击按钮时,它会btnExample在控制台中输出。

4

2 回答 2

11

如果您知道只有 JComponents 将是e.getSource()JComponent用作强制转换的返回值,则可以强制转换为 JComponent,因为它提供了更大的灵活性。如果您只使用JButtons,则可以安全地转换为 a JButton

  @Override
            public void actionPerformed(ActionEvent e) {
                if (e.getSource() == thirdBtn) {
                    //System.out.println("Third Button Click");
                    System.out.println(((JComponent) e.getSource()).getName()+" Click");
                }
            }

随意替换getName()getText(),具体取决于您的具体需要。

此外,该==运算符仅应用于比较对象引用,因此请考虑从头开始转换为 JComponent 并.equals()在名称或文本上使用。

编辑 您不能输出变量的名称,但您可以设置 JComponent 的名称/文本。例如

JButton btnExample = new JButton();
btnExample.setName("btnExample");

或者,如果您希望“btnExample”实际显示在按钮上:

JButton btnExample = new JButton();
btnExample.setText("btnExample");
于 2013-01-14T01:40:49.593 回答
6
System.out.println(((JButton) e.getSource()).getName() + " Click");
于 2013-01-14T01:39:51.170 回答