2011-11-03 32 views
0

簡短而甜美:我希望能夠通過點擊Netbeans for Mac中的GUI中的按鈕來運行另一個.java文件。在GUI中打開另一個.java文件

多一點的解釋: 我重建我創建了一個項目,當我開始用java,使之清潔。我做了很多改進,儘管我遇到的一個問題是我在一個JFrame中有太多的面板,並且每當我改變面板時,我都會有大量的代碼設置可見性。

如:

jPanel1.setVisible(false); 
jPanel2.setVisible(false); 
jPanel3.setVisible(true); 

我知道我可以只住在一起,但我想看看是否有分開的代碼的方式/面板多一點,如以下描述。 我的第一個想法是有多個文件;每個頁面一個。與您在html中的方式類似。

因此,我有LoginPage.java和GuestMainPage.java。 如果有可能,我希望能夠將它們聯繫起來,如:接近LoginPage.java開放GuestMainPage.java,按鈕上的點擊。

基本上,我希望能夠使它編譯開放另一個java文件,當我點擊我的GUI的按鈕。 (如果有幫助,該文件將在同一個項目。)

如果有打開另外一個文件的方式。可能通過訪問終端命令?

public class LoginPage extends javax.swing.JFrame { 

//Excluded a bunch of generated code from Netbeans 

private void Login(java.awt.event.MouseEvent evt) { 
//Code executed on Mouse Click of a Button labeled Login. 

      if(username.equalsIgnoreCase("guest")){ 

        //A bit of pseudocode 
        open(GuestMainPage.java); 
        close(LoginPage.java); 

      } 
      if(username.equalsIgnoreCase("admin")){ 

        open(AdminMainPage.java); 
        close(LoginPage.java); 

      } 
} 
} 

從研究和經驗,我知道你可以在同一個項目中訪問其他文件,或其他類 - 因此,使用對象和這樣的 - 但我不知道你是否能實際運行的其他文件。我將能夠通過java訪問終端的可能性。 (然後有能力做基本的任何事情,我只是無法找到如何做到這一點。)

我已經看了很多的stackoverflow主題來嘗試找到一個答案,以及大量的谷歌搜索,但我找不到真正回答我的問題的人。但是,如果真的沒有辦法做到這一點,那麼我很滿意答案確認,如果是這樣的話,我將不得不應對多個小組。

謝謝

-Ewan

+2

您不「運行」.java文件。他們是源代碼。 –

+0

我只是使用術語「運行」,因爲它是Netbeans在編譯代碼以測試它時使用的術語。我編輯了這個問題,使其更加清晰。 – Displonker

+1

對於什麼源代碼與編譯類以及如何實例化和使用它們,你真的好像很困惑。我真的,真的建議一本好的Java初學者書。 –

回答

2

你應該嘗試實現一個MVC模式。看看春天:http://www.springsource.org/

+1

與netbeans相比,springource環境非常的自由。使得更容易掌握MVC的概念。 – Displonker

4

不,你沒有「打開」其他文件這樣的,你也不希望。而是將所有Java文件編譯爲類文件並使用其他類。您可以使用自定義類加載器在命令中加載類,但是我真誠地懷疑您的應用程序真的需要它。相反,它只需要一些MVC(模型 - 視圖 - 控制器)結構(正如他們所注意到的那樣)和預先考慮。

要考慮的一個體面的解決方案是使用CardLayout,因爲這可以極大地簡化更改頂層容器(例如applet或JFrame)中顯示的GUI「視圖」或組件的更改。你可以閱讀如何在這裏使用這些人:How to use CardLayout

+0

CardLayout +1 – mKorbel

0

正如我所看到的那樣,你會像我一樣去做。請從小開始。假設我有一個「.java」文件,我想用JFRAME按鈕來運行它,所以我可以創建這個「.java」文件到一個JAR文件中,然後用JBUTTON,我可以用這個代碼運行這個JAR文件。

try { 
    Desktop.getDesktop().open(new File("Path of the *.jar File"));  
} catch(IOException ex) { 
    System.out.println(ex.getMessage()); 
} 

試試這個。

+0

這不是你想要的,但它會幫助你得到你想要的。 – International

相關問題