Application avec multiples interfaces graphiques [Résolu] - Java - Programmation
Marsh Posté le 08-04-2007 à 16:09:50
Tu as un layout fait exprès pour cette problématique :
Le CardLayout : http://java.sun.com/docs/books/tut [...] /card.html
Tu déclenches le changement de cartes à l'aide d'une combo, d'onglets, de ce que tu veux en fait...
De toute façon tu as franchement intéret à séparer tes écrans différents dans ton code...sinon après c le bordel, même si des fois c'est tentant de partager des comportements ou des morceaux d'interface...c'est ce qui me gène tjs avec Swing, je n'ai pas trouvé de moyen de partager du code simplement entre fenetre...
Marsh Posté le 08-04-2007 à 16:57:55
Merci pour ta réponse rapide. J'ai compris le fonctionnement du CardLayout. Cependant, j'aimerais par exemple que quand tu es sur le premier panel et que tu cliques sur un bouton, tu passes au panel suivant. Donc ton bouton n'est plus là après. Or avec le CardLayout, ce ne serait pas trop ça. Mais je dois pouvoir adapter un peu pour que ça joue. Non ? :-S
Marsh Posté le 08-04-2007 à 17:06:05
ben précisément, ton bouton ne doit pas être dans ton cardlayout...
en fait il faut que tu aies un JPanel "ecran" qui ait le CardLayout, et ce JPanel doit lui même être dans un autre panel, qui contiendra donc le panel écran, mais aussi tes menus, le moyen de changer le panel affiché dans le cardLayout, etc...
c'est d'ailleurs ce qu'ils font dans l'exemple : le cardLayout est ajouté à un autre JPanel, qui lui a un BorderLayout
Marsh Posté le 08-04-2007 à 17:07:45
oui je comprends (je crois). Mais je n'ai pas envie d'avoir un bouton, ou une liste déroulante hors de l'écran. c'est comme si je voulais que l'écran entier change. Donc pas de bouton, pas de liste, pas de tab.
Marsh Posté le 08-04-2007 à 17:27:19
heu la limite du card layout elle se voit pas hein...je comprends pas ton problème...
ou alors tu fais la chose suivante : tu réajoutes ton bouton à chaque "card"
et sinon quand tu as plusieurs écrans, une logique peut aussi être de faire que chaque écran amène au suivant (si c'est un workflow)
Marsh Posté le 08-04-2007 à 20:38:57
Quelque chose du genre fonctionnerait-il ?
public void setPanelCentre(JPanel pan){
panel_centre.removeAll();
panel_centre.add(pan);
panel_centre.revalidate();
}
Ou est-il préférable d'utiliser le CardLayout ?
Marsh Posté le 08-04-2007 à 23:17:30
bin en fait, la deuxième méthode n'a pas l'air de marcher, ça fait planter mon appli :S
je testerai le CardLayout ;-)
Marsh Posté le 12-04-2007 à 11:03:42
Le CardLayout fonctionne à merveille ! merci pour votre aide :-)
Marsh Posté le 13-04-2007 à 00:01:13
euh.. encore une question !
en fait, j'ai une fenêtre dans mon appli et quand je clique sur la petite croix pour fermer la fenêtre, j'ouvre un JOptionPane pour demander la confirmation de fermeture de la fenêtre. Le problème, c'est que quand je clique sur non, bin la fenêtre disparait (devient invisible je suppose). Mais comment faire en sorte qu'elle ne disparaisse pas ??
Marsh Posté le 13-04-2007 à 10:38:14
heu, de mémoire quand tu fermes une fenêtre y'a un event qui est lancé...
http://java.sun.com/docs/books/tut [...] tener.html
par contre je sais pas comment ça interagit avec les trucs genre DISPOSE_ON_CLOSE, etc...
Marsh Posté le 13-04-2007 à 11:02:52
Merci ! Tu m'as mis sur la bonne piste.
En fait, j'avais mon windowListener qui affichait la fenêtre de confirmation et voila.
Mais en effet, tu peux utiliser la méthode setDefautCloseOperation pour définir ce que tu fais quand tu fermes ta fenêtre. Et par défaut, c'est...... HIDE_ON_CLOSE ! Donc évidemment, même si le programme ne se termine pas, la fenêtre disparaît. Donc il suffit de rajouter un this.setDefautCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
et c'est réglé
Marsh Posté le 08-04-2007 à 15:55:36
Bonjour,
je développe une application avec de nombreuses interfaces graphiques. Je veux dire, globalement, je n'ai qu'une fenêtre. Mais ce qu'elle contient, change beaucoup. Evidemment hein... genre un formulaire, puis une table, puis une liste, etc... Cependant, comment implémenter tout ça ?
Je pensais créer différents JPanel pour chacune des interfaces, puis via le contrôleur, changer le panel de la fenêtre. Mais je sais pas si ça peut marcher, si c'est une bonne idée et s'il y a une meilleure manière de faire.
Merci d'avance pour vos réponses.
A+
Message édité par SatanKoRn le 12-04-2007 à 11:04:21
---------------
Matt