我正在与一个团队一起编写一个应用程序,该团队目前使用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。如果有更好的解释概念,请告诉我。
答案 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。