IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Agents de placement/Fenêtres Java Discussion :

[JPanel] Affichage en premier plan


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 14
    Par défaut [JPanel] Affichage en premier plan
    Bonjour,

    J'utilise un JFrame et j'y place dessus 3 Jpanel, 1 contenant des boutons qui modifie le 2e. Le 3e contient une image et empiète sur le 2e.
    Quand je lance l'application, l'image est bien visible mais lorsque je clique sur un bouton le 2e JPanel la recouvre. Si je minimise et maximise la fenêtre, l'image réapparaît au-dessus.

    Comment faire pour que l'image reste toujours en premier plan (always on top) ?

    J'espère avoir été clair.

    Voici le code pour plus de comprehension

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    public class MainFrame extends JFrame {
      JPanel contentPane;
      JPanel jPanel1 = new JPanel("Rouge");
      JPanel jPanel2 = new JPanel("Vert");
      JPanel jPanel3 = new JPanel("Bleu");
      JToggleButton jToggleButton1 = new JToggleButton();
      JToggleButton jToggleButton2 = new JToggleButton();
      JToggleButton jToggleButton3 = new JToggleButton();
      JLabel jLabel1 = new JLabel();
      GridLayout gridLayout1 = new GridLayout(3,1);
      JPanel jPanel4 = new JPanel();
      CardLayout cardLayout1 = new CardLayout();
     
      //Construct the frame
      public MainFrame() {
        enableEvents(AWTEvent.WINDOW_EVENT_MASK);
        try {
          jbInit();
        }
        catch(Exception e) {
          e.printStackTrace();
        }
      }
      //Component initialization
      private void jbInit() throws Exception  {
        contentPane = (JPanel) this.getContentPane();
        contentPane.setLayout(null);
        this.setSize(new Dimension(551, 477));
        this.setTitle("Frame Title");
        jPanel1.setBounds(39, 218, 315, 220);
        jPanel1.setLayout(null);
        jPanel2.setBounds(204, 40, 329, 342);
        jPanel2.setLayout(cardLayout1);
        jPanel3.setBounds(72, 55, 103, 134);
        jPanel3.setLayout(gridLayout1);
        jToggleButton1.addActionListener(new MainFrame_jToggleButton1_actionAdapter(this));
        jLabel1.setBounds(2, 5, 305, 211);
        jPanel4.setBackground(Color.white);
        jPanel4.setLayout(null);
        contentPane.add(jPanel1, null);
        jPanel1.add(jLabel1, null);
        contentPane.add(jPanel2, null);
        jPanel2.add(jPanel4,  "jPanel4");
        contentPane.add(jPanel3, null);
        jPanel3.add(jToggleButton1, null);
        jPanel3.add(jToggleButton2, null);
        jPanel3.add(jToggleButton3, null);
        ButtonGroup bg = new ButtonGroup();
        bg.add(jToggleButton1);
        bg.add(jToggleButton2);
        bg.add(jToggleButton3);
     
        jLabel1.setIcon(new ImageIcon(MainFrame.class.getResource("image.gif")));
      }
     
      void jToggleButton1_actionPerformed(ActionEvent e) {
        jPanel4.setBackground(Color.red);
      }
     
    }
    Je n'ai laissé que l'event du bouton 1 pour ne pas surcharger.
    Merci

  2. #2
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    hello,

    je me disais que tu pourrais faire une méthode (private) qui ajoute les panels dans le bon ordre (pour qu'ils se superpositionnent dans le bon ordre)... ensuite tu l'appelle lorsque tu en a besoin...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private void ajouterLesPanels(){
      removeAll();
     
      add(panel1);
      add(panel2);
      add(panel3);
      ...
    }
    non ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 14
    Par défaut
    Ca ne fonctionne pas mais ça m'a permis de comprendre que je dois rafraichir le JFrame.
    J'utilise donc le code suivant a chaque fois que j'utilise un bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void jToggleButtonX_actionPerformed(ActionEvent e) {
        jPanel4.setBackground(color.couleur);
        jPanel1.repaint();
    }
    Mais je ne trouve pas ça très pratique, il faudrait une fonction "always on top".
    Si quelqu'un a une autre idée...
    Je place quand même mon sujet en [résolu]

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 14
    Par défaut
    Autre moyen pour ne pas rafraichir mon JFrame :
    j'utilise un Panel (AWT) au lieu du JPanel (SWING) pour insérer l'image.
    Comme AWT est plus lourd que SWING, le Panel reste devant les autres JPanel.
    En espérant que ça puisse aider quelqu'un d'autre un jour

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PPT-2003] Affichage en premier plan les elements de la barre de dessin
    Par Alexandra 01 dans le forum VBA PowerPoint
    Réponses: 14
    Dernier message: 20/07/2010, 20h37
  2. Affichage 2D premier plan.
    Par katmai dans le forum OpenGL
    Réponses: 4
    Dernier message: 29/12/2009, 15h16
  3. Affichage en premier plan d'une TextBox
    Par molo2003 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 20/10/2007, 14h28
  4. [c++] Souci d'affichage au premier plan
    Par Pov' typ' dans le forum DirectX
    Réponses: 2
    Dernier message: 25/06/2006, 22h02
  5. [glut] forcer l'affichage au premier plan
    Par khayyam90 dans le forum OpenGL
    Réponses: 7
    Dernier message: 19/07/2004, 15h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo