如何获取和打印包含JButton的变量的名称?

See*_*ker -1 java variables swing jbutton

我想知道是否有可能得到并打印出一个JButton名字?

鉴于此代码:

JButton button1 = new JButton();
Run Code Online (Sandbox Code Playgroud)

我怎么能回来button1

我试过了:

button.getName()
Run Code Online (Sandbox Code Playgroud)

但它回来了

null
Run Code Online (Sandbox Code Playgroud)

Hov*_*els 5

我的猜测 - 你真的想要JButton显示的文本,而不是它的name属性.如果是这样,退房,

button.getText();
// or
button.getActionCommand();
Run Code Online (Sandbox Code Playgroud)

如果您正在寻找变量名称,那么通过方法调用无法获得,也不应该是因为对象可以被许多变量引用,或者可能是集合或数组的一部分,因此变量名称为一个对象接近一个毫无意义的概念.

道德:通过向我们提供你的背景故事来澄清你的问题,你正在尝试做什么,而不是你想要做什么.


编辑
你在评论中说明,

得到按钮的名称,例如,如果我有一个名为JButton的按钮button1 = new JButton(); 我想打印这个按钮的名称,即button1

您将变量名称与对象名称混淆.button1上面是JButton 变量的名称,但不是它引用的对象,因为对象没有名称.

通常不可能通过调用对象上的方法来获取对象的变量"name",因为许多对象甚至没有名称,例如,如果它们是集合的一部分,或者单个对象可能被许多人引用变量,以及"名称"将是您想要的那个.

比如说你有这个代码:

JButton button1 = new JButton("Foo");
JButton button2 = button1;
Run Code Online (Sandbox Code Playgroud)

这里创建的JButton对象的"名称"是什么?这两个按钮1和按钮2指的是准确相同的 JButton对象,所以有没有这样的事情,作为一个在这里对象的名称.

再说一遍,你并没有告诉我们你想要做什么,而是告诉我们你是如何做到的.您的问题是经典的XY问题,只有在您告诉我们整体问题时才会解决.

如果您正在尝试找出已按下哪个JButton,则ActionListener的actionPerformed ActionEvent参数有一个getSource()方法,该方法将返回对按下的按钮对象的引用,您可以使用它.您如何使用它将取决于您需要告诉我们的问题的详细信息.

例如:

// inside of an ActionListener
public void actionPerformed(ActionEvent evt) {
  // this will get you a reference to the button object that was pressed:
  AbstractButton sourceBtn = (AbstractButton) evt.getSource();

  // now you can use the sourceBtn object, or compare its reference to your 
  // JButton variables or collections in your GUI
  // for example if your GUI has buttons in a List<JButton> you could
  for (JButton button : buttonList) {
    if (sourceBtn == button) {
      // you've found your button of interest!
    }
  }
}
Run Code Online (Sandbox Code Playgroud)