Afficher un JButton par dessus un fond d'écran (sans le cacher)
falwhite
-
15 mai 2015 à 18:03
Twinuts
Messages postés5374Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention 3 mars 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.
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());
Twinuts
Messages postés5374Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention 3 mars 2023111 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);
}
}
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 ?
Twinuts
Messages postés5374Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention 3 mars 2023111
>
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.
19 mai 2015 à 12:17
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 ?
20 mai 2015 à 07:39
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.