-1

フォーム内のすべてのボタン テキストをループ処理しようとしていますが、Java の解決策が見つかりません !!

私は次のようなことをしました:

 for(JButton temp : this)
 {
        if(JButton.getText() == "A")
        {
          JButton.enabled(false);
        }
 }

しかし運がない

PS私の問題はequalsステートメントに関するものではありません!! ウィンドウ内のすべてのボタンをループしたい。

MadProgrammer のおかげで動作する結果は次のとおりです。

for(Component comp : jPanel2.getComponents()) 
            {
                if(comp instanceof JButton)
                {
                   JButton btn = (JButton)comp;                       
                   if(btn.getText().equals("A")) 
                   {
                     btn.setEnabled(false); 
                   }
                }
            }
4

3 に答える 3

0

コードの問題は==符号です。2 つのオブジェクト (ここでは ) の値を比較するときは常に、の代わりに メソッドStringを使用します。 equals()==

演算子==はプリミティブ型用です。オブジェクトの場合、オブジェクトの値ではなくアドレスを比較します。一方、equals()実際に値を比較します。

試す:

for(JButton temp : listOfButtons) // I changed the iterable here.
 {
        if("A".equals(temp.getText())) // notice who the caller to .equals() is. It is "A"
        {
          temp.setEnabled(false); // make temp disabled
        }
 }  

厳しいことではありませんが、使用していたコードには完全な欠陥がありました。エラーを修正しました。それがあなたのために働くかどうか見てください。
エラーは次のとおりです。 1. for ループ内のボタンのソースが間違っていました。2. getText() は動的メソッドでありながら静的メソッドとして使用されました。3. equals() の代わりに == を使用した4. setEnabled() を動的ではなく静的メソッドとして使用した

于 2013-10-21T01:51:59.387 に答える
0

文字列比較を見てみましょう

      if("A".equals(temp.getText())) // or use if("A".equalsIgnoreCase(temp.getText()))
        {
          temp.setEnabled(false);
        }

それ以外の

      if(JButton.getText() == "A")
        {
          JButton.enabled(false);
        }
于 2013-10-21T01:48:34.860 に答える