5

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

4

5 に答える 5

9

このメソッドを使用してae.getSource()、ボタンオブジェクト自体を取得します。何かのようなもの:

JButton myButton = (JButton)ae.getSource();
于 2012-12-12T04:01:42.330 に答える
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変数がその元のオブジェクトを参照していないことは重要ですか?

繰り返しますが、変数名は誤解を招くことが多いため、変数名を信頼しないでください。

于 2012-12-12T04:07:25.547 に答える
1

名前が必要な場合は、それを取得する関数があります。

getName

ただし、setNameも使用する必要があります。

于 2012-12-12T04:05:16.793 に答える
1

ボタンb1、b2を取得する場合は、ae.getSource()を使用できます。

使用できるボタンのラベル名が必要な場合は、ae.getName()

于 2012-12-12T04:10:22.617 に答える
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);
 } 
}
于 2021-02-19T18:40:28.530 に答える