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)
我的猜测 - 你真的想要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)
| 归档时间: |
|
| 查看次数: |
1282 次 |
| 最近记录: |