Получение названия JButton по клику
@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
в консоли.
2 ответа
Вы можете привести к JComponent, если вы знаете, что только JComponents будет возвращаемым значением e.getSource()
я использую JComponent
как актерский состав, так как это дает больше гибкости. Если вы используете только JButtons
можете смело бросать 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");
System.out.println(((JButton) e.getSource()).getName() + " Click");