2010-10-08 3 views
-1

Je crée une petite application cryptographique pour le bureau en utilisant Java. J'utilise JFrames (import javax.swing.JFrame) avec Oracle JDeveloper 11g sous Linux.Application de bureau - comment créer et détruire dynamiquement des formulaires

Je veux avoir une forme/cadre « bienvenue » où les utilisateurs peuvent choisir leur méthode de cryptage, puis sur le choix de la méthode, Je veux créer dynamiquement la forme appropriée pour la méthode de cryptage choisi et aussi détruire/gratuit/disposer() de le formulaire de bienvenue. Lorsque l'utilisateur a terminé son cryptage, il doit fermer le cadre/formulaire (soit en cliquant sur le x en haut à droite - soit en utilisant le bouton Quitter ou par n'importe quelle méthode ) et le cadre de bienvenue doit être recréé dynamiquement apparaître.

J'ai essayé différentes choses - btnEncode_actionPerformed (ActionEvent e) puis this.Dispose() - et je l'ai bidouillé avec this_windowClosed (WindowEvent e) et dispose(), mais rien ne semble fonctionner.

Même une solution de contournement utilisant setVisibl (true/false) serait acceptable au cette étape - cela m'a fait mal à la tête toute la journée. C'est très facile à faire en Delphi!

TIA et rgs,

Paul ...

Répondre

0

quelque chose comme ça fait habituellement le tour (Note: Je n'ai pas testé)

public class WelcomeMsg extends JFrame 
. 
. 
. 
public void btnContinue_actionPerformed(ActionEvent e) 
{ 
    this.dispose(); 
    SwingUtilities.invokeLater(new Runnable(){ new JFrameAppropriateWindow(args) }); 
} 

où btnContinue est le bouton Continuer sur votre formulaire de bienvenue et JFrameAppropriateWindow est l'image suivante que vous souhaitez afficher en fonction du choix de l'utilisateur. Args sont les arguments que vous devez passer.

Lorsque vous êtes prêt, vous pouvez simplement disposer le cadre actuel et relancer une instance de WelcomeMsg

0

Je mets ensemble cet exemple simple pour la création et l'affichage d'un panneau en fonction d'un choix de l'utilisateur.

à la place
public class Window extends JFrame { 

public Window() { 
    this.setLayout(new BorderLayout()); 
    JComboBox encryptionCombobox = new JComboBox(); 
    encryptionCombobox.addItem("foo"); 
    encryptionCombobox.addItem("bar"); 
    //... 
    encryptionCombobox.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      // find choices and the correct panel 
      JPanel formPanel = new JPanel(); 
      formPanel.setOpaque(true); 
      formPanel.setBackground(Color.RED); 
      //... 
      Window.this.add(formPanel, BorderLayout.CENTER); 
      Window.this.validate(); 
      Window.this.repaint(); 
     } 
    }); 
    add(encryptionCombobox, BorderLayout.NORTH); 
} 

public static void main(String[] args) { 
    new Window().setVisible(true); 
} 
} 

Quand je viens d'y penser, vous devriez probablement utiliser un CardLayout, qui vous permet de basculer entre les différents panneaux (cartes).

Questions connexes