2011-09-10 93 views
1

我正在做一個網絡項目。我在Java Project控制檯應用程序下編譯了一個代碼,它可以工作。但是,當我創建一個GUI並分配代碼以在按下按鈕時運行時,它會在點擊按鈕時掛起。Java JButton和swing問題

這是源代碼:

@Action 
public void EstablishConnection() { 
    serverAddress = jTextFieldServerAddress.getText(); 
    serverPort = Integer.parseInt(jTextFieldPort.getText()); 
    serverUName = jTextFieldUName.getText(); 
    serverUPwd = jTextFieldUPwd.getText(); 

    try { 
     client = new FTPClient(); 

     client.connect(serverAddress, serverPort); 
     boolean login = client.login(serverUName, serverUPwd); 

     if(login) { 
      System.out.println("Successfully logged in\n"); 
     } 
     else { 
      System.out.println("Unable to login\n"); 
     } 
    } 
    catch(Exception ex) { 
     System.out.println("Exception Raised: " + ex); 
    } 
} 

當在擺動的應用按鈕被按下時的動作被調用。它不適合我。但它的控制檯應用程序運行速度非常快。

+3

爲了更快提供更好的幫助,請發佈[SSCCE](http://pscode.org/sscce.html)。 –

+0

請學習java命名約定並堅持使用它們 – kleopatra

回答

1

我建議你應該運行一些依賴於外部因素的代碼,比如訪問一個遠程服務器等,這可能會延遲響應,在它自己的線程中。

顯示與一個不確定的進度條MessageDialog:

connProgressBar.setIndeterminate(true);

你不知道,你的連接是否會終止,也不若會,所以添加一個按鈕,允許用戶將殺死的連接線,每當她感覺如此。

由於您可能連接到ftp服務器以上傳和下載文件,建立連接後,請使用確定的進度條來顯示在新線程中運行的文件或文件進度的下載百分比。

3

任何時候我看到單詞「掛起」我假設你需要使用單獨的線程來執行掛起的代碼。解決方案請參見Concurrency in Swing