2012-06-26 43 views
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);    
     } 
    } 
} 

我調試的代碼來檢查正在傳遞到標誌值和值「True」。它也進入if條件但Button未啓用。我不明白這裏發生了什麼!

+0

的對象這是一個JButton?您是否嘗試設置爲可見,或設置爲啓用?目前尚不清楚。 – cheesysam

+0

@cheesysam是的,它是一個JButton,我試圖啓用它..因爲我已經禁用它在構造 – user1318860

回答

2

在代碼中的一些要點:

  1. 首先,要啓用/ disbaling,你做它,如果看到標誌爲true。您應該使用setEnabled(b),所以SendFile.setVisible(true);將成爲SendFile.setEnabled(true);
  2. 決不比較喜歡這個if(flag == true)布爾值,它應該只是if(flag)
  3. 和你methhod應該是這樣的:

    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); 
    } 
} 
+0

也都在這裏,在我的計劃改變我的代碼,但它不工作:( 加上JToogleButton不爲我的目的 – user1318860

+0

@ user1318860你有沒有點擊'在MessageDialog ok'按鈕?,至於消息對話框是在屏幕上該方法不會被調用導致後檢查。 –

+0

@ user1318860看到我的編輯回答樣本。 –

2

檢查,如果你沒有創建的一個以上的對象FileSending類.... 如果一個對象爲PA創建你不能創建該類的一個以上的對象... 檢查你的GUI類的RT,另一個是短信類的一部分..

只使用一個FileSending類

+0

我是這樣做... :) thx – user1318860

+0

將此答案標記爲已接受,以便其他人可以知道。 –