如何在java中获取点击事件中的按钮名称



我想在使用Swing单击按钮时获得按钮对象的名称。我正在实现以下代码:

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)       ;
} 
}

在变量s中,我得到按钮的命令值,但我想得到按钮的名称,如b1b2。我怎么能拿到这个?

使用ae.getSource()方法获取按钮对象本身。类似于:

JButton myButton = (JButton)ae.getSource();

您询问的是获取变量名的问题,这是不应该想要的,因为它具有误导性,并不那么重要,而且在编译的代码中几乎不存在。相反,您应该专注于获取对象引用,而不是变量名。如果必须将对象与String相关联,一种干净的方法是使用Map(如HashMap<String, MyType>HashMap<MyType, String>),具体取决于您希望使用哪个作为键,但也不要过于依赖变量名,因为非最终变量可以随时更改引用,并且对象可以由多个变量引用。

例如,在以下代码中:

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变量不引用原始对象有关系吗?

同样,不要相信可变名称,因为它们经常会误导你。

如果您需要名称,可以通过以下函数获取:

getName

但是您也必须使用setName。

如果你想获得按钮b1、b2,你可以有ae.getSource().

如果您想要可以使用的按钮的标签名称,ae.getName()

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)
{
JButton myButton = (JButton)ae.getSource();
String s=myButton.getText();
System.out.println("s is"+s);
} 
}

相关内容

  • 没有找到相关文章

最新更新