2013-10-27 104 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); 
    } 
相关问题