2011-10-14 2 views
1

Je voudrais créer un "assistant" sur un JDialog en utilisant le CardLayout, déclenché par l'utilisateur en appuyant sur le bouton Nouveau de la barre de menu. Dans Netbeans j'ai créé un JDialog à travers lequel j'ai une série de jPanels au format CardLayout. Dans mon « Nouveau » élément de menu que j'ai écrit le code suivant pour lancer le JDialog comme suit,Besoin de créer un WIZARD sur Netbeans (jDialog vs CardLayout)?

CardLayout cl = (CardLayout) jDialogNew.getLayout(); 
cl.preferredLayoutSize(jDialogNew); 
cl.show(jDialogNew, "card1"); 

Cependant, le compilateur est livré avec l'erreur suivante,

 
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: 
    java.awt.BorderLayout cannot be cast to java.awt.CardLayout 

Si quelqu'un est là que peut me prendre à travers la création d'un assistant sur "Netbeans" Je serais éternellement reconnaissant

+0

Cet [exemple] (http://stackoverflow.com/questions/5654926/implementing-back-forward-buttons-in-swing/5655843#5655843) peut être un bon début sur votre [sscce] (http://sscce.org/). – trashgod

Répondre

2

Votre jDialogNew a un ensemble BorderLayout comme sa mise en page et pas un CardLayout, ce qui signifie que lorsque vous appelez getLayout() pour essayer de l'insérer dans une variable qui ne peut pas contenir une BorderLayout une exception est thr posséder. Les classes sont différentes de sorte que vous ne pouvez pas passer de l'une à l'autre, provoquant une exception ClassCastException.

Une solution possible à ceci est de définir votre propre mise en page pour le jDialogNew. Je n'ai pas de code en face de moi donc je ne peux pas vérifier moi-même, mais essayez de chercher une méthode comme setLayout(), et passez une nouvelle mise en page de votre choix.

+0

Merci Numeron pour votre aimable réponse! Vous voyez, je veux créer un dialogue d'assistant en utilisant quelques JPanel sous le JDialog. J'ai besoin que l'utilisateur puisse parcourir ces JPanels à travers une série de boutons suivant/précédent. Cette opération est d'une importance vitale pour moi à ce stade et je dois le faire dès que possible. Votre aimable assidance dans la résolution de ce problème est très appréciée! – Sam

0

La façon dont je l'ai fait dans Netbeans était très facile! Tout ce que je devais faire était d'introduire un JFrame séparé dans mon paquet de ressources (faisant partie de mon paquet global) et dans ce JFrame j'ai créé un JPanel avec le CardLayout, sous lequel j'ai créé tous mes autres JPanels concernant ce dessus. JPanel. Maintenant que j'ai le JFrame, j'ai pu définir ma toile fixe et tout ce dont j'avais besoin pour construire et activer ma boîte de dialogue "Assistant" CardLayout! Puis j'ai dû appeler le nouveau JFrame avec mon application chaque fois que l'événement était déclenché. Cela a rendu la vie beaucoup plus facile et tout fonctionne très bien!

1

vous pouvez faire avec la suite

create JFrame -> Add "CARD LAYOUT" 

ajouter JPanels au projet. Conception JPanels. Personnalisez le code d'initialisation de JFrame. Insérer JPanels avec this.add(jpanel name). pour tous les jpanels setVisible (false) - alors setVisible vrai quel jpanel vous voulez commencer.