如何用第二个替换应用程序中的第一个JFrame?

时间:2013-10-27 06:13:03

标签: java swing

我正在与一个团队一起编写一个应用程序,该团队目前使用3个不同的JFrame。从我一直在阅读的内容来看,我认为这是错误的方式,但我不知道如何继续。

当应用程序启动时,它会打开一个小Jframe,允许用户单击4个按钮之一。如果单击开始游戏或添加图像,则会打开另一个窗口。游戏窗口,用于游戏和图像编辑窗口,用于图像。当他们关闭窗口时,第一个JFrame重新出现。

我已经创建了第一个JFrame但是无法让第二个JFrame打开。我不知道我的代码中是否存在问题,或者第二个JFrame中的某些内容是否未正确设置以进行调用。

第一个JFrame:     包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目前有一个标签。我是团队中建议使用JFrame的人,所以如果我错了请告诉我,以便我可以让团队朝着正确的方向前进。 此外,我目前正在通过Creating a GUI With JFC/Swing。如果有更好的解释概念,请告诉我。

3 个答案:

答案 0 :(得分:0)

尝试设置第二帧的首选大小和相对位置,并确保清除第一帧的“alwaysOnTop”属性。您可以尝试以下操作来显示第二帧“按钮”中的第一帧 1.将第一帧的引用传递给seocnd的costructor。 2.使用Frame类型的对象变量来保存它。 3.在actionEvent触发所需按钮的代码中,将第二帧的“可见”设置为false,将第一帧的“可见”设置为true。

答案 1 :(得分:0)

当用户点击按钮使JFRAME显示为false或者您没有要显示的任何重要数据时。抛弃框架, 并在第二帧的结束事件中再次打开它

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

        this.dispose();
        new Login().setVisible(true);
    }  

答案 2 :(得分:0)

我能够让这个工作,但发现每次打开一个不同的JFrame它也会在任务栏中显示为另一个应用程序。因此,我们将辅助JFrame切换为JDialogs,并将main设置为false。