2016-12-01 3 views
0

ich mit einiger Mühe bin hierneuer JFrame erscheint hinter dem aktuellen JFrame

Ich habe eine Haupt CRUD Form, und eine Taste in dieser Form, dass, wenn angeklickt hat eine andere Form nennt dies eine für verantwortlich, eine Abfrage an die macht Datenbank, um die Daten und Stunden zu bestellen, die vom Benutzer eingegeben und auf dem Bildschirm angezeigt wurden ... aber hier ist der Deal, wenn ich auf den Knopf "Listar Por Prioridade" klicke, um dieses Formular "Trabalhos Prontos" aufzurufen, erscheint es hinter dem erste „Registro de Novos Chamados“ ... ich habe zu verwenden versucht:

private void btListarPrioridadeActionPerformed(java.awt.event.ActionEvent evt) {             
     try {            
      man = new MySQLDaoManager("root", "", "localhost", "atendimentos", 3306); 
      try { 
       FormTrabProntos frmTrbPrnt = new FormTrabProntos(man); 
       frmTrbPrnt.setVisible(true); 
       frmTrbPrnt.toFront(); 
       FormNovaChamada frmNvCham = new FormNovaChamada(frmini, editavel); 
       frmNvCham.toBack(); 

      } catch (DAOException ex) { 
       Logger.getLogger(FormGestor.class.getName()).log(Level.SEVERE, null, ex); 
      } 

     } catch (SQLException ex) { 
      Logger.getLogger(FormGestor.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

und nichts (siehe Bild unten) .. jemand weiß, wie kann ich dieses Problem beheben und machen die aufgerufener Bildschirm erscheint an der Vorderseite des ersten ?! Vielen Dank ![enter image description here

+0

Dies kann Ihnen helfen: [http://stackoverflow.com/questions/309023/how-to-bring-a-window-to-the-front](http://stackoverflow.com/questions/309023/ how-to-bring-a-window-to-the-front) – byxor

+1

Das Standardverhalten zeigt einen Frame an der Front, wenn 'setVisible (true)' verwendet wird. Ändern Sie die Reihenfolge Ihrer Logik so, dass der gewünschte Frame auf der Vorderseite als der letzte sichtbar gemacht wird. – camickr

+0

Am einfachsten wäre es, nur 1 Bildschirm gleichzeitig zu zeigen. Was nützt es, einen JFrame zu zeigen, der im Hintergrund hinter einem anderen steckt? Legen Sie die übergeordnete Sichtbarkeit auf "false" fest, wenn die Eingabeaufforderung JFrame angezeigt wird, und setzen Sie die Sichtbarkeit auf "true", wenn Sie die Eingabeaufforderung schließen. JFrame – Filip

Antwort

-1

Schließlich ich es gelöst haben, die Funktion blieb wie folgt:

private void btPriorityListActionPerformed(java.awt.event.ActionEvent evt) {             
 
     try {            
 
      man = new MySQLDaoManager("root", "", "localhost", "attendances", 3306); 
 
      try { 
 
       setVisible(false); 
 
       dispose(); 
 
       FormTrabProntos frmTrbPrnt = new FormTrabProntos(man); 
 
       frmTrbPrnt.setVisible(true); 
 
       frmTrbPrnt.toFront(); 
 
       frmTrbPrnt.requestFocus(); 
 
       
 
      } catch (DAOException ex) { 
 
       Logger.getLogger(FormGestor.class.getName()).log(Level.SEVERE, null, ex); 
 
      } 
 
      
 
     } catch (SQLException ex) { 
 
      Logger.getLogger(FormGestor.class.getName()).log(Level.SEVERE, null, ex); 
 
     } 
 
    }

Vielen Dank für die Hilfe !!!

+0

Ihr REALES Problem ist, dass Sie 'JFrame' für Fälle verwenden, in denen Sie' JInternalFrame' verwenden sollten. Wie Andrew Thompson vorgeschlagen hat, studieren Sie seinen empfohlenen Beitrag zur Verwendung von mehreren 'JFrame'. Sie haben "eine Schaltfläche in diesem Formular geschrieben, die beim Klicken ein anderes Formular aufruft". Höchstwahrscheinlich wäre die "Form" mit dem Button ein 'JFrame'. Alle anderen "Formen", die innerhalb dieses Rahmens aufgerufen werden, sollten 'JInternalFrame' Objekte sein. Tun Sie dies, und Sie müssen den übergeordneten Frame nicht entfernen. – hfontanez

+0

Hallo hfontanez! Vielen Dank für den Tipp, ich werde es jetzt tun, ich habe diesen Code ein wenig Eile gemacht, weil meine abschließende Papierpräsentation an diesem Montag und ich etwas verzweifelt war, also, auf diesem Registerbildschirm behalte ich es als JFrame und in diesem zweiten ist ein JInternalFrame, nicht wahr? –

+0

ja. Ihr Hauptfenster (Programm) sollte ein 'JFrame' sein und alle anderen abhängigen Fenster sollten 'JInternalFrame' sein. Hier ist ein gutes Tutorial: https://docs.oracle.com/javase/tutorial/uiswing/components/internalframe.html – hfontanez