如何在java中的click事件上获取按钮名称

Ade*_*ngh 5 java swing awt event-handling

我希望在使用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)       ;
} 
}
Run Code Online (Sandbox Code Playgroud)

在变量si得到按钮的命令值,但我想得到像b1或b2这样的按钮的名称我怎么能得到这个

Ric*_*uen 7

使用该ae.getSource()方法获取按钮对象本身.就像是:

JButton myButton = (JButton)ae.getSource();
Run Code Online (Sandbox Code Playgroud)


Hov*_*els 5

你问有关获取变量名,东西,你应该被想要得到,因为它是误导性的,是不是真的那么重要,几乎不会在编译的代码存在.相反,你应该专注于获取对象引用,而不是变量名称.如果你必须将一个对象与一个String相关联,那么一个干净的方法就是使用一个Map,例如a HashMap<String, MyType>或者HashMap<MyType, String>你想要用它作为键,但是再次不要过多地依赖变量名,因为non - 最终变量可以在帽子的下降处更改引用,并且对象可以由多个变量引用.

例如,在以下代码中:

JButton b1 = new JButton("My Button");
JButton b2 = b1;
Run Code Online (Sandbox Code Playgroud)

该变量名名字?b1和b2都指向相同的JButton对象.

和这里:

JButton b1 = new JButton("My Button");
b1 = new JButton("My Button 2");
Run Code Online (Sandbox Code Playgroud)

第一个JButton对象的变量名是什么?b1变量不引用该原始对象是否重要?

再次不要把你的信仰变成变量名,因为它们经常会误导你.