Partage
  • Partager sur Facebook
  • Partager sur Twitter

Afficher un panel par dessus d'autres panels

Le tout avec une animation

    30 avril 2008 à 13:58:58

    Bonjour,

    Je créer une application graphique avec Swing.

    J'aimerais afficher un panel par dessus d'autres panels (oui, bien au pluriel).
    En gros, comme un message d'erreur qui s'affiche par dessus tout (ou un panel qui cache tout le reste).

    Quel est la méthode à utiliser ?
    Merci !
    • Partager sur Facebook
    • Partager sur Twitter
      30 avril 2008 à 14:09:33

      Pour faire apparaitre comme un pop-up au dessus de ton premier JPanel, il existe les JOptionPane.
      Pour voir comment ca marche, mais aussi pour voir pas mal d'option de swing, je te conseil de regarder le jar demo de sun intitulé : SwingSet.Il te permet de visualiser le code mais aussi le rendu graphique.
      Bonne chance.
      • Partager sur Facebook
      • Partager sur Twitter
        30 avril 2008 à 15:54:42

        Sinon tu ajoute ton JPanel dans celui qui te sert de conteneur et tu invoque la méthode revalidate() de ce qui te sert de conteneur...
        Mais les JOptionPane son plus propre pour les message d'erreurs... ^^
        • Partager sur Facebook
        • Partager sur Twitter
          30 avril 2008 à 18:23:54

          Citation : cysboy

          Sinon tu ajoute ton JPanel dans celui qui te sert de conteneur et tu invoque la méthode revalidate() de ce qui te sert de conteneur...
          Mais les JOptionPane son plus propre pour les message d'erreurs... ^^


          hum...je comprends pas...

          La c'est forcement pour un message d'erreur, en fait c'est pour voir les détails lorsqu'on clique sur un bouton.

          J'ai vu SwingSet, je vais voir de plus près. :p (J'espere que le code est bien organisé :-° )

          Edit :
          J'ai regardé JOptionPane, c'est pas du tout ce que je cherche, vu que ca ça s'ouvre dans une nouvelle fenetre. :p
          Moi je veux "juste" un panel par dessus plusieurs autres. :D
          • Partager sur Facebook
          • Partager sur Twitter
            30 avril 2008 à 19:20:16

            J'ai mis un exemple sur ce post. Regarde si ça peu convenir...
            • Partager sur Facebook
            • Partager sur Twitter
              30 avril 2008 à 20:11:59

              Citation : cysboy

              J'ai mis un exemple sur ce post. Regarde si ça peu convenir...


              Muarf, si j'ai bien compris ce que t'a fait, c'est pas ce que je veux faire. :(

              Bon allez, voici deux jolis dessins fait avec paint. :lol:

              La fenetre :
              Image utilisateur

              Et lorsqu'on clique sur un bouton par exemple, ce panel si spécial apparait :
              Image utilisateur
              • Partager sur Facebook
              • Partager sur Twitter
                4 mai 2008 à 17:36:43

                J'ose un petit up !
                • Partager sur Facebook
                • Partager sur Twitter
                  8 mai 2008 à 15:47:18

                  Je doute que ça soit possible simplement...

                  C'est pourquoi je pense que tout le monde se pose la question :

                  - Quel intéret réel cela aurait pour toi ?

                  - Pourquoi ne pas utiliser JOptionPane, avec un popup qui GARDE LE FOCUS, et qui est TOUJOURS AU PREMIER PLAN, pendant que tout ce qui est derrière est "disabled" (si je me souviens bien c'est comme ça qu'on fait en Swing, pour que les objets soient grisés et pas utilisables pendant un certain temps)...

                  - D'ailleurs, le popup en question peut être affiché en fonction de la position de ta fenêtre.


                  En attendant je continue d'y réfléchir... mais je vois mal comment ça pourrait se faire.
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Zeste de Savoir, le site qui en a dans le citron !
                    8 mai 2008 à 19:20:56

                    Tu pourrais aussi t'amuser avec un GlassPane mais franchement, si c'est juste ça, prends une JWindow avec les attributs setUndecorated et setAlwaysOnTop sur true ...
                    • Partager sur Facebook
                    • Partager sur Twitter
                      8 mai 2008 à 20:29:06

                      Je ne peux pas utiliser un JOptionpane.
                      Je ne peux pas "faire sortir" quelque chose de la fenetre.
                      En fait, j'ai un JPanel dans quoi je dois tout afficher, et je n'est pas le droit d'afficher quelque chose à l'extérieur de celui ci (donc pas de JOptionpane).
                      L'application simule un PDA. ;)

                      Je cherche également une solution, mais j'ai du mal.

                      Si quelqu'un trouve une solution, un grand merci a lui ! :)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        9 mai 2008 à 16:07:29

                        Et une JInternalFrame... Centrée et sans bord (si on peut faire ça...) ?
                        Ca pourrai coller ! :)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          9 mai 2008 à 20:10:21

                          Salut,
                          une autre solution est de déclaré le layout de ta fenêtre a null. Ensuite tu appel la méthode setBounds...
                          • Partager sur Facebook
                          • Partager sur Twitter
                            10 mai 2008 à 12:12:28

                            bofbof l'histoire de layout

                            sinon tu peux t'arranger pour que le contenu de ta fenetre principale soit contenus dans un seul JPanel ensuite pour afficher ton message tu ajoute le nouveau panel a l'ancien

                            mais bon c'est vrai qu'un JOptionPanel ou une JInternalFrame seraient plus approprie
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              10 mai 2008 à 12:44:35

                              Oui mais le JOptionPane est interdit il nous a dit...
                              Sinon le problème avec le JInternalFrame semble une bonne solution mais on ne peut pas réellement la centrer par rapport a la fenêtre de derrière. Celle-ci va s'adapter au Layout.
                              Pour utiliser un layout(null) en java, il faut être fou. Nous avons des layout puissant de disponible donc autant les utiliser.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                11 mai 2008 à 2:13:04

                                Nan, le JInternalFrame ça peut pas marcher, on doit le placer dans un JDesktopPane et il faudrait surcharger son paintComponent, ce qui est faisable (cf mon site) mais pas moyen alors de s'en servir pour placer des composants (JButton/JRadio) et si on est vraiment dans l'optique de coder pour du PDA, il n'y a aucune raison d'utiliser du swing standard...
                                Même pas les JButton...
                                Donc ça t'oblige à faire ton interface "à la main" comme si tu codais sans lib graphique. Dans l'exemple de ton popup, c'est simple,

                                private static boolean isPopupVisible=false;

                                paint (buffer g)
                                //tes trucs usuels style boutons texte...
                                g.drawMachin(...);
                                //on affiche le menu, ou non
                                if(isPopupVisible)
                                g.fillRect(...);//on déblaye une zone de l'écran
                                g.drawMachinBis(...);

                                si tu fais passer ta variable isPopupVisible à true (par l'intermédiaire d'un event quelconque) ta méthode dessinera par dessus les précédents graphismes et pour peu que t'y mette la forme, ça ressemblera à un menu, et la pas de doute, il sera au dessus de tout !
                                • Partager sur Facebook
                                • Partager sur Twitter

                                Afficher un panel par dessus d'autres panels

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                • Editeur
                                • Markdown