java中如何在点击事件中获取按钮名称
我想在使用Swing单击按钮时获得button对象的名称。我正在实现以下代码:java中如何在点击事件中获取按钮名称,java,swing,event-handling,awt,Java,Swing,Event Handling,Awt,我想在使用Swing单击按钮时获得button对象的名称。我正在实现以下代码: class test extends JFrame implements ActionListener { JButton b1,b2; test() { Container cp=this.getContentPane(); b1= new JButton("ok"); b2= new JButton("hi"); c
class test extends JFrame implements ActionListener
{
JButton b1,b2;
test()
{
Container cp=this.getContentPane();
b1= new JButton("ok");
b2= new JButton("hi");
cp.add(b1);cp.add(b2);
b1.addActionListener(this);
b2.addActionListener(this);
}
public void actionPerformed(ActionEvent ae)
{
String s=ae.getActionCommand();
System.out.println("s is"+s) ;
}
}
JButton b1 = new JButton("My Button");
JButton b2 = b1;
在变量s
中,我得到按钮的命令值,但我想得到按钮的名称,如b1
或b2
。如何获取此信息?使用该方法获取按钮对象本身。比如:
JButton myButton = (JButton)ae.getSource();
如果您需要名称,可以通过以下函数获取:
但是您也必须使用setName。您正在询问如何获取变量名,这是您不希望得到的,因为它具有误导性,并且实际上并不重要,而且几乎不存在于编译代码中。相反,您应该专注于获取对象引用,而不是变量名。如果必须将对象与字符串相关联,一种干净的方法是使用映射,如
HashMap
或HashMap
,这取决于您希望用作键的对象,但同样不要过多地依赖变量名,因为非最终变量可以在瞬间更改引用,对象可以由多个变量引用
例如,在以下代码中:
class test extends JFrame implements ActionListener
{
JButton b1,b2;
test()
{
Container cp=this.getContentPane();
b1= new JButton("ok");
b2= new JButton("hi");
cp.add(b1);cp.add(b2);
b1.addActionListener(this);
b2.addActionListener(this);
}
public void actionPerformed(ActionEvent ae)
{
String s=ae.getActionCommand();
System.out.println("s is"+s) ;
}
}
JButton b1 = new JButton("My Button");
JButton b2 = b1;
名称是哪个变量名?b1和b2都引用相同的JButton对象
在这里:
JButton b1 = new JButton("My Button");
b1 = new JButton("My Button 2");
第一个JButton对象的变量名是什么?b1变量不引用原始对象是否重要
同样,不要相信变量名,因为它们通常会误导您。如果您想获得按钮b1、b2,可以使用ae.getSource()
如果您想要可以使用的按钮的标签名称,ae.getName()您想要获取按钮的引用或标签吗?我想要获取按钮的名称,而不是按钮的标签“名称”是什么意思?在您的示例中,名称是什么?1)为每个按钮添加一个单独的侦听器(或
操作
)。问题消失了。请注意,b1
不是该代码中任何按钮的“名称”。这两个按钮都没有用户定义的名称。2) 这些按钮中只有一个是可见的。3) 请对代码块使用一致且合乎逻辑的缩进。@user1634700:您删除的答案不错,事实上,对于任何学习Swing编码的人都是一个很好的建议。为什么要删除它?