2015-07-11 118 views
-1

我正在Java Swing中创建一个学生数据库项目。现在我创建了许多JFrame。例如,如果我想添加一个新学生,将出现一个新的框架,其中将有一些文本框和按钮,现在我想让最后一个JFrame消失。我使用dispose()方法关闭正在运行的JFrame,并在下一帧中使用.setVisible(true),并且我在下一帧中也做了同样的事情,当添加学生框架的工作结束时,它将返回旧JFrame的,我用同样的程序,但原来的框架犯规消失,只有运行我的程序正在消失后的第一帧,但其他人都没有, 这是第一守则在JFrames之间切换

btnAdd = new JButton("Add"); 
    btnAdd.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 

      try{ 

       frame.dispose(); 
       frame.setVisible(false); 
       AddStudent add=new AddStudent(); 
       add.setVisible(true); 


      }catch(Exception e){ 
       e.printStackTrace(); 
      } 
     } 
    }); 

和第二代码是

btnAddStudent = new JButton("Add Student"); 
    btnAddStudent.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
      //int action=JOptionPane.showConfirmDialog(null, "Do You Really Want To Add This Studen?","Delete",JOptionPane.YES_NO_OPTION); 
      //if(action==0){ 
      try{ 

       frame.dispose(); 
       frame.setVisible(false); 

       Admin admin=new Admin(); 
       admin.setVisible(true); 
      }catch(Exception e){ 
       e.printStackTrace(); 
      } 
      //} 

     } 
    }); 

现在,当我从第一帧走到第二帧时,第一帧消失,当第二帧的工作rame结束了,我第一帧来了,第二帧不消失。两个框架都在不同的类中。任何方案?对不起我的坏英文

+4

应用程序应该有一个总是可见的主JFrame。如果您需要一个子窗口,例如创建一个学生,那么您应该创建一个“模态JDialog”来创建学生并输入学生信息。当对话框关闭时,您的主框架已准备好进行进一步处理。请参阅:http://stackoverflow.com/questions/9554636/the-use-of-multiple-jframes-good-bad-practice – camickr

+0

看看http://stackoverflow.com/questions/7256606/jdialog-setvisiblefalse- vs处置'处置'vs'setVisible' –

回答

0

我个人的经验告诉我,多个JFrame“在同一级别”不是一个好主意。

您应该创建一个JFrame作为“Main”,并在需要时创建其他JFrame而无需配置“Main”JFrame。

我不确定如果我解释得很好,英语不是我的第一语言。

这个想法基本上不是在创建另一个JFrame时处理当前的JFrame。

+0

虽然延迟回复,但是顺便谢谢:) – CodeHead