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

时间:2012-12-12 03:56:09

标签: java swing event-handling awt

我想在使用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中我得到了按钮的命令值,但我想得到按钮的名称,如b1或b2 我怎么能得到这个

5 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:5)

你问的是获取变量名称,你应该想要得到的东西,因为它有误导性,并不是那么重要,几乎不存在于编译代码中。相反,你应该专注于获取对象引用,而不是变量名称。如果你必须将一个对象与一个字符串相关联,那么一个干净的方法就是使用一个地图,例如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变量不引用该原始对象是否重要?

再次不要信任变量名称,因为他们经常会误导你。

答案 2 :(得分:1)

如果您需要名称,可以使用该功能:

getName

但你也必须使用setName。

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

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