0

こんにちは、私の問題は次のとおりです。フォームのボタンを別のクラスから有効にできません。私のフォームクラスは

public class FileSending {
   //Function for enabling the button 
   public void activate_btnSEND (boolean flag) {
       SendFile.setEnabled(flag);      
   }    
}

そして、私がこの関数を呼び出しているクラスは次のとおりです:

public class SMS {
   Public void split(){
      if(check_string.equalsIgnoreCase("0001"))  {                
           JOptionPane.showMessageDialog(null, " Recepient Has Accepted The" +
                                " Request.Connection Has Been Established :) ");  
           FileSending setBtn = new FileSending();
           setBtn.activate_btnSEND(true);               
      }
   }
}

flag に渡される値を確認するためにコードをデバッグしましたが、値は"True"です。if 条件にも入りますが、ボタンは有効になっていません。ここで何が起こっているのかわかりません!!

4

2 に答える 2

2

FileSendingクラスの複数のオブジェクトを作成していないかどうかを確認してください....そのクラスの複数のオブジェクトを作成してはなりません...1つのオブジェクトがGUIクラスの一部として作成され、別のオブジェクトがSMSの一部として作成されているかどうかを確認してくださいクラス..

FileSendingクラスのオブジェクトを1つだけ使用する

于 2012-07-01T18:10:31.170 に答える
2

コード内のいくつかのポイント:

  1. まず、有効化/無効化して、フラグが true の場合に表示します。を使用する必要がありますsetEnabled(b)SendFile.setVisible(true);SendFile.setEnabled(true);
  2. このようにブール値を比較しないif(flag == true)でください。if(flag)
  3. そして、あなたの方法は次のようになるはずです:

    public void changeStateOfButton (boolean flag) {
    //now what ever you pass will decide whether to enable or disable the button.
      myButton.setEnabled(flag); 
    }
    
  4. または、そのようなことにはJToggleButtonを使用する必要があります。

  5. また、変数の命名スキルを向上させます。

私が言っていることの小さな例:

public class TestButtonEnable {
  public static void main(String[] args) {
      JFrame frame = new JFrame("TestButtonEnable");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setSize(200, 200);
      frame.setLayout(new BorderLayout());
      JButton button = new JButton("Enable that button");
      final MyPanel panel = new MyPanel();
      button.addActionListener(new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent e) {
              JOptionPane.showMessageDialog(null, "Some message. :)");
              panel.changeStateOfButton(true); // call second class method here
          }
      });
      frame.add(button, BorderLayout.NORTH);
      frame.add(panel, BorderLayout.SOUTH);
      frame.setVisible(true);
  }
}

jbutton を含む 2 番目のクラス:

class MyPanel extends JPanel {
    private JButton button;
    public MyPanel() {
        button = new JButton("Enable me");
        button.setEnabled(false); // disabled by default
        this.add(button);
    }
    public void changeStateOfButton (boolean flag) {
        button.setEnabled(flag); 
    }
}
于 2012-06-26T13:14:49.863 に答える