2010-03-15 10 views
17

J'essaye de créer un JFrame avec une zone de contenu utilisable de 500x500 exactement. Si je fais ça ...Swing: définir la taille de la zone de contenu JFrame

public MyFrame() { 
    super("Hello, world!"); 
    setSize(500,500); 
} 

... Je reçois une fenêtre dont la taille est pleine 500x500, y compris la barre de titre, etc., où je vraiment besoin d'une fenêtre dont la taille est quelque chose comme 504x520 pour tenir compte la bordure de la fenêtre et la barre de titre. Comment puis-je atteindre cet objectif?

Répondre

23

vous pouvez essayer deux choses: 1 - un hack:

public MyFrame(){ 
JFrame temp = new JFrame; 
temp.pack(); 
Insets insets = temp.getInsets(); 
temp = null; 
this.setSize(new Dimension(insets.left + insets.right + 500, 
      insets.top + insets.bottom + 500)); 
this.setVisible(true); 
this.setResizable(false); 
} 

2- ou Ajouter un JPanel au volet contenu du cadre et Il suffit de définir la préférence/taille minimale du JPanel à 500X500, paquet d'appel()

  • 2- est plus portable
7

Qu'à cela ne tienne, j'ai tout compris:

public MyFrame() { 
    super("Hello, world!"); 

    myJPanel.setPreferredSize(new Dimension(500,500)); 
    add(myJPanel); 
    pack(); 
} 
+2

En Java 5, il est réellement possible de le faire sans autre panneau. Voir http://stackoverflow.com/questions/2796775/setting-the-size-of-a-contentpane-inside-of-a-jframe. –

24

utiliser simplement:

public MyFrame() { 
    this.getContentPane().setPreferredSize(new Dimension(500, 500)); 
    this.pack(); 
} 

Il n'y a pas besoin d'un JPanel d'être là-bas, si vous voulez juste pour définir la taille du cadre.

+0

Solution la plus simple. –

Questions connexes