2016-11-05 5 views
0
import javax.swing.JFrame; 

public class Choose extends javax.swing.JFrame { 

/** 
* Creates new form NewJFrame 
*/ 
public Choose() { 
    initComponents(); 
} 


@SuppressWarnings("unchecked") 
// <editor-fold defaultstate="collapsed" desc="Generated Code">       
private void initComponents() { 

    LoginButton = new javax.swing.JButton(); 
    Create = new javax.swing.JButton(); 

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
    setTitle("Family Entertainment Center"); 

    LoginButton.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N 
    LoginButton.setText("Login"); 
    LoginButton.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      LoginButtonActionPerformed(evt); 
     } 
    }); 

    Create.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N 
    Create.setText("Create Account"); 
    Create.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      CreateActionPerformed(evt); 
     } 
    }); 

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
    getContentPane().setLayout(layout); 
    layout.setHorizontalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
      .addGap(34, 34, 34) 
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
       .addComponent(Create, javax.swing.GroupLayout.PREFERRED_SIZE, 327, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addComponent(LoginButton, javax.swing.GroupLayout.PREFERRED_SIZE, 327, javax.swing.GroupLayout.PREFERRED_SIZE)) 
      .addContainerGap(39, Short.MAX_VALUE)) 
    ); 
    layout.setVerticalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() 
      .addContainerGap(68, Short.MAX_VALUE) 
      .addComponent(Create, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addGap(49, 49, 49) 
      .addComponent(LoginButton, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addGap(79, 79, 79)) 
    ); 

    pack(); 
}// </editor-fold>       

public static void CreateActionPerformed(java.awt.event.ActionEvent evt) {           
    JFrame frame = new CreateLogin(); 
    frame.setVisible(true); 
}           

public static void LoginButtonActionPerformed(java.awt.event.ActionEvent evt) {           
    JFrame frame = new LoginFrame(); 
    frame.setVisible(true); 
} 

Dans l'écouteur d'événement d'action ci-dessus, je veux cacher JFrame alors qu'il crée les autres JFrames. J'ai essayé d'instancier et de cacher le jframe mais cela crée une nouvelle instance. J'ai également essayé le "this.setVisible (faux)" qui ne fonctionne pas non plus.Java cacher JFrame qui est prolongée par une classe avec le clic d'un bouton

/** 
* @param args the command line arguments 
*/ 
public static void main(String args[]) { 
    /* Set the Metal look and feel */ 
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> 
    /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. 
    * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
    */ 
    try { 
     for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
      if ("Metal".equals(info.getName())) { 
       javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
       break; 
      } 
     } 
    } catch (ClassNotFoundException ex) { 
     java.util.logging.Logger.getLogger(Choose.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (InstantiationException ex) { 
     java.util.logging.Logger.getLogger(Choose.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (IllegalAccessException ex) { 
     java.util.logging.Logger.getLogger(Choose.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
     java.util.logging.Logger.getLogger(Choose.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } 
    //</editor-fold> 

    /* Create and display the form */ 
    java.awt.EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      new Choose().setVisible(true); 
     } 
    }); 
} 

// Variables declaration - do not modify      
public static javax.swing.JButton LoginButton; 
public static javax.swing.JButton Create; 
// End of variables declaration     

}

+1

1) Voir [L'utilisation de JFrames multiples, bonnes/mauvaises pratiques?] (Http://stackoverflow.com/q/9554636/418556) 2) Voir [Détection/correction pour le support de fermeture suspendue d'un bloc de code ] (http://meta.stackexchange.com/q/251795/155831) pour un problème que je ne pouvais plus être dérangé de réparer. 3) Apprendre la nomenclature Java courante (conventions de nommage - par exemple 'EachWordUpperCaseClass',' firstWordLowerCaseMethod() ',' firstWordLowerCaseAttribute' sauf s'il s'agit d'un 'UPPER_CASE_CONSTANT') et l'utiliser de façon cohérente. –

Répondre

1

Je ne sais pas si cela est la meilleure solution, mais si vous ne le faites pas need them static, il devrait fonctionner pour supprimer le champ static de vos méthodes CreateActionPerformed() et LoginButtonActionPerformed(). Vous pouvez ensuite appeler le setVisible(false), car vous appelez maintenant à partir de votre instance Choose.

public void CreateActionPerformed(java.awt.event.ActionEvent evt) { 
    JFrame frame = new CreateLogin(); 
    frame.setVisible(true); 
    setVisible(false); 
} 

Vous devriez être en mesure de retirer static de votre JButtons ainsi.

Espérons que cela aide. :)

Editer: Voir le commentaire de Andrew.