Getting the name of a JButton on click
Solution 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");
Solution 2
System.out.println(((JButton) e.getSource()).getName() + " Click");
![Exikle](https://i.stack.imgur.com/Yy1Yi.png?s=256&g=1)
Exikle
Aspiring Software Engineer and Game Designer https://www.github.com/Exikle https://exikle.github.io
Updated on July 09, 2022Comments
-
Exikle almost 2 years
@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. -
Exikle over 11 yearsThank you but this is not what i meant :( Im asking for how to get the Name of the object. JButton btn; So when i call the comment it outputs "btn"
-
MadProgrammer over 11 years(While I know the OP has said "name", most developers never set a components "name", instead, you might want to include an example using
getText
as well ... IMHO) -
MadProgrammer over 11 years@Exikle Define "name". What are expected to be printed??
-
David Kroukamp over 11 years+1 this is a nice dynamic approach rather than checking against the variable name.
-
A--C over 11 years@MadProgrammer You just get auto-notified, sorry! I suspect it had to do with me forgetting the
e
, but who knows? -
MadProgrammer over 11 yearsIt would nice if down voting actually required the voter to leave a comment!