2013-06-27 4 views
-1

Donc voici mon code:Fermer Cadre interne après une certaine tâche

public class DesktopFrame extends JFrame{ 
    private JDesktopPane theDesktop; 
    private JInternalFrame login; 
    private JMenuBar bar; 
    private JMenu fileMenu; 
    private JMenuItem newLoginFrame; 
    private LoginPanel panel; 

    // set up GUI 
    public DesktopFrame(){ 
     super("Application"); 
     bar = new JMenuBar(); // create menu bar 
     bar.setBackground(new Color(255,215,0)); 
     fileMenu = new JMenu("File"); // create Add menu 
     fileMenu.setBackground(new Color(255,215,0)); 
     newLoginFrame = new JMenuItem("Login"); 
     newLoginFrame.setBackground(new Color(255,215,0)); 
     fileMenu.add(newLoginFrame); // add new frame item to Add menu 
     bar.add(fileMenu); // add Add menu to menu bar 
     setJMenuBar(bar); // set menu bar for this application 
     theDesktop = new JDesktopPane(); // create desktop pane 
     theDesktop.setBackground(Color.BLUE); 
     add(theDesktop); // add desktop pane to frame 
     // set up listener for newLoginFrame menu item 
     newLoginFrame.addActionListener(new ActionListener(){ // anonymous inner class 
      // display new internal window 
      public void actionPerformed(ActionEvent event){ 
       login = new JInternalFrame("Member Login", false, false, false, false); 
       panel = new LoginPanel(); 
       login.add(panel, BorderLayout.CENTER); // add panel 
       login.setSize(375,300); 
       login.setLocation(20,20); 
       theDesktop.add(login); // attach internal frame 
       login.setVisible(true); // show internal frame 
      } // end method actionPerformed 
     } // end anonymous inner class); // end call to addActionListener 
    } // end DesktopFrame constructor 

    public void getValid(){ 
     if(panel.getValid() == true){ 
      try{ 
       login.setClosed(true); 
      } 
      catch(PropertyVetoException p){  
      } 
     } 
    } 
} // end class DesktopFrame 

Dans ce document, il y a aussi une autre classe « LoginPanel » qui gère l'ensemble du cadre de connexion. Si le nom d'utilisateur/mot de passe fonctionne, il crée une variable booléenne "valide" qui est vraie. Je l'ai appelé avec "panel.getValid()". Comme vous pouvez le voir, le but est de quitter le cadre de connexion lorsque "valide" est vrai. Est-ce possible? Qu'est-ce que les gens recommandent? À l'heure actuelle, avec "setClosed", il quitte l'intégralité du cadre, pas seulement le cadre interne "Login". Je ne sais pas pourquoi

+2

1) Ne pas étendre le cadre ou d'autres conteneurs de niveau supérieur. Au lieu de créer et utiliser une instance de un. 2) Utilisez un retrait cohérent et logique pour les blocs de code. L'indentation du code a pour but d'aider les gens à comprendre le déroulement du programme. 3) Pour une meilleure aide plus tôt, postez un [SSCCE] (http://sscce.org/). –

Répondre

1

Je pense que la meilleure idée est de créer JDialog pour la connexion (pour JDialog docu voir this link), travaillez avec lui de la même manière que vous faites avec le cadre interne. Après un appel réussi, appelez() sur JDialog.

This question and answers devrait être utile.

+0

génie merci – user2518777

+0

@ user2518777 si c'est votre solution privilégiée, vous pouvez accepter la réponse – 1ac0

+0

+1 ... @ user2518777 Voir aussi [this] (http://stackoverflow.com/questions/13055107/joptionpane-check-user-input- et-prevent-from-closing-until-conditions-are-met/13055405 # 13055405) réponse qui utilise un 'JDialog' pour la validation des entrées. –

Questions connexes