我想知道是否可以获取并打印JButton
的名字?
鉴于此代码:
JButton button1 = new JButton();
如何返回button1
?
我试过了:
button.getName()
但它返回
null
答案 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()