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