Getting the name of a JButton on click

前提是你 提交于 2019-12-10 11:15:21

问题


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

In the code above, I was wondering if instead of doing this:

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

if I could do something like this:

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

However the code outputs:

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

I don't want this, I want to know how to get the JButton name and output it on click.

EDIT:

Some people are confused. When I say "name" (maybe that's the wrong word for it), I meant say you initialize a JButton

JButton btnExample = new JButton();

I want it so that when you click the button, it outputs btnExample in the console.


回答1:


You can cast to a JComponent if you know that only JComponents will be the return value of e.getSource() I'm using JComponent as the cast since it gives more flexibility. If you're only using JButtons, you can safely cast to a JButton instead.

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

Feel free to replace getName() with getText(), depending on what exactly you need.

Also, the == operator should only be used to compare Object references, so consider casting to a JComponent from the beginning and using .equals() on the names or text.

Edit You can't output the name of the variable, but you can set the name/text of the JComponent. Eg

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

Or if you want "btnExample" to actually be displayed on the button:

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



回答2:


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


来源:https://stackoverflow.com/questions/14310331/getting-the-name-of-a-jbutton-on-click

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!