2013-10-27 141 views
0

我正在寫一個團隊的應用程序,目前使用3個不同的JFrames。從我一直在閱讀的內容來看,我認爲這是一條錯誤的路,但我不知道如何繼續。如何用第二個應用程序替換應用程序中的第一個JFrame?

當應用程序啓動時,它打開一個小Jframe,允許用戶點擊4個按鈕之一。如果點擊開始遊戲或添加圖像,則會打開另一個窗口。遊戲窗口,用於遊戲和圖像編輯窗口,用於圖像。當他們關閉窗口時,第一個JFrame會重新出現。

我創建了第一個JFrame,但一直無法打開第二個JFrame。我不知道這是否是我的代碼中的問題,或者是否第二個JFrame中的某些內容沒有正確設置來調用它。

第一個JFrame: package mmlgame;

import javax.swing.JFrame; 

public class MMLGame extends javax.swing.JFrame { 

    public MMLGame() { 
     initComponents(); 
    } 

    private void btnExitActionPerformed(java.awt.event.ActionEvent evt) { 
     System.exit(0); 
    } 

    private void btnStartGameActionPerformed(java.awt.event.ActionEvent evt) { 
    // TODO add your handling code here: 
     GameScreen frame = new GameScreen(); 

     frame.setVisible(true); 

    } 
    public static void main(String args[]) { 

     /* Create and display the form */ 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new MMLGame().setVisible(true); 
      } 
     }); 
    } 
    // Variables declaration - do not modify 
    private javax.swing.JButton btnAddImage; 
    private javax.swing.JButton btnCredits; 
    private javax.swing.JButton btnExit; 
    private javax.swing.JButton btnStartGame; 
    private javax.swing.JPanel jPanel1; 
    private javax.swing.JLabel lblLogo; 
    // End of variables declaration 
} 

我還沒有設置所有的按鈕。在繼續下一步之前,我喜歡讓每個人都工作。 第二個JFrame: 包mmlgame;

public class GameScreen extends javax.swing.JFrame { 

    public GameScreen() { 
     initComponents(); 
    } 

    public static void main(String args[]) { 

     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new GameScreen().setVisible(true); 
      } 
     }); 
    } 

    // Variables declaration - do not modify      
    private javax.swing.JButton jButton1; 
    private javax.swing.JComboBox jComboBox1; 
    private javax.swing.JLabel jLabel17; 
    private javax.swing.JPanel jPanel1; 
    private javax.swing.JPanel pnlGameScreen; 
    // End of variables declaration     
} 

第二個JFrame目前有一個標籤。我是團隊中的一員,建議使用JFrames,所以如果我錯了,請讓我知道,這樣我可以讓團隊朝着正確的方向前進。 此外,我目前正在通過Creating a GUI With JFC/Swing的方式工作。如果有什麼能夠更好地解釋這些概念,請讓我知道。

+1

另請參見[*使用多個JFrames,好/壞實踐?*](http://stackoverflow.com/q/9554636/230513) – trashgod

+0

它應該這樣工作..也許你沒有把代碼爲事件綁定,因爲我認爲它是由netbeans生成的..無論如何,嘗試首先做一個簡單的system.out.print,看看你的按鈕是否綁定到事件處理程序..如果沒有,你應該點擊netbeans中的按鈕gui編輯器並檢查事件,看看動作偵聽器是否綁定到這個處理程序.. –

+0

當然,我們在這裏沒有討論多個jframes問題..你應該閱讀trashgods鏈接.. –

回答

0

我能得到這個工作,但他發現,每一個不同的JFrame打開時它也顯示了其他應用程式中任務欄。所以我們將輔助JFrames切換到JDialog,並將main設置爲false。

0

嘗試設置第二幀的首選大小和相對位置,並確保清除第一幀的「alwaysOnTop」屬性。您可以嘗試以下操作以顯示第二幀的第一幀'按鈕 1.將第一幀的參考傳遞給seocnd的構造函數。 2.使用Frame類型的對象變量來保存它。 3.在actionEvent觸發所需按鈕的代碼中,將第二幀的「可見」設置爲false,並將第一幀的「可見」設置爲true。

0

當用戶點擊按鈕時,使JFRAME可見,或者如果你沒有任何重要的數據顯示。處置框架, 並在第二幀的關閉事件再次打開它

private void btnLogoutActionPerformed(java.awt.event.ActionEvent evt) {           

     this.dispose(); 
     new Login().setVisible(true); 
    } 
相關問題