Получение названия 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");
Другие вопросы по тегам