我想在使用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 我怎么能得到这个
答案 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)
答案 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);
}
}