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 条件,但未启用 Button。我不明白这里发生了什么!

4

2 回答 2

2

检查您是否创建了多个 FileSending 类的对象...。您不能创建多个该类的对象...检查一个对象是否创建为您的 GUI 类的一部分,而另一个对象是 SMS 的一部分班级..

仅使用 FileSending 类的一个对象

于 2012-07-01T18:10:31.170 回答
2

您的代码中的一些要点:

  1. 首先,您正在启用/禁用,如果标志为真,则使其可见。你应该使用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:

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 回答