J'ai des problèmes avec la compréhension du comportement de mon application. Je veux créer une fenêtre simple (1000x700px), divisé en deux parties (250px et 750px largeur respectivement). J'ai essayé le code suivant:Java Swing: problèmes de largeur
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Example extends JFrame
{
private static final long serialVersionUID = 1L;
public Example()
{
this.setSize(1000, 700);
this.setTitle("Example");
this.setResizable(false);
this.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
JPanel navigation_panel_wrap = new JPanel();
JPanel content_panel_wrap = new JPanel();
navigation_panel_wrap.setPreferredSize(new Dimension(250, 700));
content_panel_wrap.setPreferredSize(new Dimension(750, 700));
content_panel_wrap.setBackground(Color.green);
navigation_panel_wrap.setBackground(Color.red);
this.getContentPane().add(navigation_panel_wrap);
this.getContentPane().add(content_panel_wrap);
}
public static void main(String[] args)
{
Example example = new Example();
example.setVisible(true);
}
}
Comme vous pouvez le voir, je régler manuellement la mise en page gestionnaire pour JFrame
(FlowLayout
au lieu de BorderLayout
avec zéro lacunes horizontales et verticales). Bien sûr, je peux juste utiliser BorderLayout
et d'utiliser la méthode add()
avec les paramètres BorderLayout.EAST
et BorderLayout.WEST
, mais je veux comprendre ce qui ne va pas avec FlowLayout
. Quand je lance mon application, je reçois le texte suivant (pas de vert JPanel
):
Si je diminue la largeur, par exemple, content_panel_wrap
et fais 744px au lieu de 750px, tout fonctionne correctement. Donc la question est - quels sont ces étranges 6 pixels? Je ne suis pas sûr que cette valeur soit constante pour tous les systèmes d'exploitation, donc je veux comprendre son origine.
Voir ce [Q & A] (http://stackoverflow.com/q/7229226/230513). – trashgod
Merci beaucoup, lien très utile. –