Bonjour,je ne trouve pas comment avoir la meme fenetre quand je passe en mode plein ecran les bouton ne sons plus centré
svp qui peut m aider
mercii
Version imprimable
Bonjour,je ne trouve pas comment avoir la meme fenetre quand je passe en mode plein ecran les bouton ne sons plus centré
svp qui peut m aider
mercii
Salut,
C'est que tes boutons ne sont pas réellement centrés dans la fenêtre pas en plein écran, mais que c'est juste sa taille qui en donne l'impression. Comment places-tu tes boutons (peux-ton voir le code ?) ?
cette partie du code contient les bouton
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////Code:
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
62
63
64
65
66
67
68
69
70
71
72 package projet2; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; public class Conteneur_Fenetre extends JPanel { private JLabel Etiquette; private JButton bouton1; private JButton bouton2; private JButton bouton3; public Conteneur_Fenetre() { super(); this.prop_Conteneur(); } private void prop_Conteneur() { //this.setLayout(null); this.pro_Etiquette(); this.pro_Bouton(); } private void pro_Etiquette() { Etiquette = new JLabel(); this.Etiquette.setBounds(50,10, 400, 100); this.Etiquette.setText("bonjour , veuillez choisir votre statut"); this.Etiquette.setForeground(Color.blue); Font font = new Font("Arial",Font.BOLD,20); Etiquette.setFont(font); this.add(Etiquette); } private void pro_Bouton() { bouton1 = new JButton(); this.bouton1.setText("t l"); this.bouton1.setBounds(40, 100, 150, 100); this.add(bouton1); /*mettre une image au lieu d un texte sur un bouton ImageIcon img = new ImageIcon("img/images.jpg"); bouton2 = new JButton("Testeur",img);*/ bouton2=new JButton(); this.bouton2.setBounds(220, 100, 150, 100); this.bouton2.setText("t"); this.add(bouton2); bouton3 = new JButton(); this.bouton3.setBounds(400, 100, 150, 100); this.bouton3.setText("D"); this.add(bouton3); } }
j ai une autre classe fentre la voici
///////////////////////////////////////
Code:
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 package projet2; import java.awt.GraphicsDevice; import java.awt.Window; import javax.swing.ImageIcon; import javax.swing.JFrame; public class Fenetre extends JFrame { Conteneur_Fenetre pan; Fenetre() { super(); this.propFenetre();} private void propFenetre() { this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationRelativeTo(null); this.setTitle("App"); this.setSize(600, 400); this.setResizable(true); //this.setAlwaysOnTop(true); pan = new Conteneur_Fenetre(); this.setContentPane(pan); this.setVisible(true); //changer l icone de l app ImageIcon image = new ImageIcon("img/images.jpg"); this.setIconImage(image.getImage()); //fen.setVisible(true); //Passage en plein écran GraphicsDevice myDevice = java.awt.GraphicsEnvironment. getLocalGraphicsEnvironment().getDefaultScreenDevice(); Window myWindow = null; if( myDevice.isFullScreenSupported() ) { try { myDevice.setFullScreenWindow(myWindow); } finally { myDevice.setFullScreenWindow(null); } } else { System.err.println("Plein écran non supporté"); } } }
Forcément, en utilisant un placement absolu, les boutons sont à des positions fixées et de tailles fixées : il n'y a aucune raison qu'ils changent de place, donc deviennent centrés si la taille de la fenêtre change. Tu as commenté setLayout(null), donc maintenant tes boutons sont placés automatiquement. Le gestionnaire de placement est celui par défaut (pour un JPanel, c'est un FlowLayout). Normalement, il faut éviter d'utiliser des placements absolus, justement à cause du problème que tu as (les positions et tailles ne s'adaptend pas automatiquement à la taille de la fenêtre).
Tu as plusieurs possibilités :
- Utilisez les gestionnaires de placement adaptés. Un GridBagLayout devrait faire l'affaire.
- Solution bancale, mais simple, avec ton code (en remettant le setLayout(null)) : mettre le panel pan dans un GridBagLayout (le panel sera centré horizontalement et verticalement, si c'est bien ce que tu veux)
Code:
1
2
3
4
5
6
7
8
9
10
11 //this.setSize(600, 400); this.setResizable(true); // this.setAlwaysOnTop(true); pan = new Conteneur_Fenetre(); JPanel main = new JPanel(new GridBagLayout()); // va centré son uniquement contenu (pan) pan.setPreferredSize(new Dimension(600,400)); // avec un layout null, un composant n'a pas de taille, on lui en donne une donc main.add(pan); this.setContentPane(main); pack(); this.setVisible(true);
mercii beaucoup Joel.drigo , je vais essayé avec le GridBagLayout , je vous tiendrai au courant du résultat