Afficher un JButton par dessus un fond d'écran (sans le cacher)

falwhite - 15 mai 2015 à 18:03
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 20 mai 2015 à 07:39
Bonjour,

Je débute en programmation Java et j'aimerais créer une fenêtre avec un arrière plan par dessus laquelle il y aurait un bouton (au centre de la fenêtre).

J'ai essayé de nombreuses choses, en vain. Ci-dessous le code qui donne ce que j'ai de mieux pour le moment.

Merci d'avance de votre aide :)



import java.awt.*;
import javax.swing.*;

public class FenetreLancement extends JFrame{

private JPanel panel;
private JLabel label;
private Image fond;
private JButton btnStart;

public FenetreLancement (){
panel = new JPanel();
label = new JLabel();

btnStart = new JButton ("Commencer a jouer");
Font f=new Font("Times new roman", Font.BOLD, 28);
btnStart.setFont(f);
btnStart.setContentAreaFilled(false);
btnStart.addActionListener(new GestionBoutonStart());

label.setIcon(new ImageIcon("Jungle.png"));
panel.add(label);

this.setSize(new Dimension(800,600));
this.setContentPane(panel);
this.add(btnStart);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}

public static void main(String[] args) {
FenetreLancement f = new FenetreLancement();
}

}

1 réponse

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
18 mai 2015 à 12:28
Salut,

C'est un truc comme ça que tu veux faire ?
import java.awt.BorderLayout;
import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;


public class Wallpaper extends JFrame {

  public Wallpaper() {
    setSize(800, 600);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    
    JLabel content = new JLabel();
    content.setLayout(new BorderLayout());
    // ici j'utilise une image sur le net
    try {
      URL img = new URL("http://germany.wollemipine.com/images/wp_wallpaper9_800x600.jpg");
      content.setIcon(new ImageIcon(img));
    } catch(Exception e) {
      e.printStackTrace();
      System.exit(1); // si on ne peut afficher l'image on sort
    }
    // ajout du label en lieu et place du content pane
    setContentPane(content);
    
    // ajout des composants:
    JPanel panel1 = new JPanel();
    panel1.setOpaque(false); // important, les jpanel sont en opaque=1 par defaut
    panel1.add(new JLabel("A label"));
    panel1.add(new JButton("A button"));
    
    getContentPane().add(panel1, BorderLayout.CENTER);
  }
  
  public static void main(String[] args) {
    new Wallpaper().setVisible(true);
  }
  
}


2
Oui c'est exactement ça merci :) !
Mais je ne comprends juste pas pourquoi malgré l'utilisation du BorderLayout.CENTER le bouton et le label ne sont pas au centre de l'image ?
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111 > falwhite
20 mai 2015 à 07:39
Salut,

C'est pourtant le comportement normale du BorderLayout, si tu veux que le Center soit reelement Center il faudrait compléter et ajouter un panel au nord.
0
Rejoignez-nous