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

时间:2014-02-17 17:54:54

标签: java swing variables jbutton

我想知道是否可以获取并打印JButton的名字?

鉴于此代码:

JButton button1 = new JButton();

如何返回button1

我试过了:

button.getName()

但它返回

null

3 个答案:

答案 0 :(得分:5)

我的猜测 - 你真的想要JButton显示的文本,而不是它的name属性。如果是,请查看,

button.getText();
// or
button.getActionCommand();

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

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


修改
你在评论中说明,

  

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

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

通常不可能通过调用对象上的方法来获取对象的变量“name”,因为许多对象甚至没有名称,例如,如果它们是集合的一部分,或者可能引用单个对象由许多变量,所以“名称”将是你想要的。

比如说你有这个代码:

JButton button1 = new JButton("Foo");
JButton button2 = button1;

这里创建的JButton对象的“名称”是什么? button1和button2都是指完全相同的 JButton对象,因此这里没有对象的名称。

同样,你并没有告诉我们你想要做什么,而是告诉我们你是怎么做的。您的问题是经典XY Problem,只有在您告诉我们整体问题时才能解决。

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

例如:

// 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!
    }
  }
}

答案 1 :(得分:2)

默认情况下,

Swing name属性为null。你需要设置它们

button.setName("name");

答案 2 :(得分:1)

如果要获取按钮上的文本,则需要使用方法getText()。所以你的解决方案就是。

button.getText()