0

我正在与一个团队一起编写一个应用程序,该团队目前使用 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 当前有一个标签。我是团队中建议使用 JFrames 的人,所以如果我错了,请告诉我,以便我可以让团队朝着正确的方向前进。此外,我目前正在通过使用 JFC/Swing 创建 GUI。如果有什么可以更好地解释这些概念,请告诉我。

4

3 回答 3

0

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

于 2013-10-27T06:52:30.980 回答
0

当用户单击按钮时,使 JFRAME 可见 false 或者如果您没有要显示的任何重要数据。处理框架,然后在第二个框架的关闭事件中再次打开它

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

        this.dispose();
        new Login().setVisible(true);
    }  
于 2013-10-28T06:48:05.400 回答
0

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

于 2013-12-16T02:21:33.630 回答