Pourquoi le centrage dans JFrame ne fonctionne pas?
Résolu
Pulsar360
Messages postés
133
Statut
Membre
-
Pulsar360 Messages postés 133 Statut Membre -
Pulsar360 Messages postés 133 Statut Membre -
Bonjour,
J'essaye de centrer un carrer dans une JFrame mais je ne comprend pas pourquoi ça ne fonctionne pas. Pourquoi les calcules sont bon.
Voici mon code:
Voici ce que ça donne: http://hpics.li/081c77f
Quelqu'un aurait une explication?
J'essaye de centrer un carrer dans une JFrame mais je ne comprend pas pourquoi ça ne fonctionne pas. Pourquoi les calcules sont bon.
Voici mon code:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TestCentrage {
public static void main(String[] args) {
JFrame fen = new JFrame();
Pan pan = new Pan();
fen.setTitle("Test le Centrage");
fen.setSize(600,600);
fen.setVisible(true);
fen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fen.setContentPane(pan);
}
}
class Pan extends JPanel {
public void paintComponent (Graphics g) {
g.setColor(Color.black);
g.fillRect((600/2)-(500/2), (600/2)-(500/2), 500,500);
}
}
Voici ce que ça donne: http://hpics.li/081c77f
Quelqu'un aurait une explication?
1 réponse
Pour ceux que ça intéresse en réalité j'ai bien une fenêtre de 600 x 600 mais dans la quel sont ajouter les bordures et le titre donc au final il n'y à que 584 x 562 de pixel util.
La solution :
Utiliser setPreferredSize
Et la nous avons bien 600x600 de pixel utile pour une fenêtre qui au final fait 638 x 616 ( et oui y'a les bordures en plus).
La solution :
Utiliser setPreferredSize
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TestCentrage {
public static void main(String[] args) {
JFrame fen = new JFrame();
Pan pan = new Pan();
int hauteur = 600;
int largeur = 600;
fen.setTitle("Test le Centrage");
pan.setPreferredSize(new Dimension(600,600));
fen.add(pan);
fen.pack();
fen.setVisible(true);
fen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fen.setContentPane(pan);
}
}
class Pan extends JPanel {
public void paintComponent (Graphics g) {
g.setColor(Color.black);
g.fillRect((600/2)-(500/2), (600/2)-(500/2), 500,500);
System.out.println("Largeur = " + getWidth() + " Hauteur = " + getHeight());
}
}
Et la nous avons bien 600x600 de pixel utile pour une fenêtre qui au final fait 638 x 616 ( et oui y'a les bordures en plus).