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
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/). –