Swing: définir la taille de la zone de contenu JFrame

j'essaie de faire un JFrame avec une zone de contenu utilisable d'exactement 500x500. Si je fais cela...

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

... J'obtiens une fenêtre dont la taille est 500x500, y compris la barre de titre, etc., où j'ai vraiment besoin d'une fenêtre dont la taille est quelque chose comme 504x520 pour tenir compte de la bordure de fenêtre et titlebar. Comment puis-je y parvenir?

17
demandé sur igul222 2010-03-16 02:42:18

3 réponses

vous pouvez essayer quelques 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 panneau de contenu du cadre et Il suffit de définir la taille préférée/minimale de la un Composite de 500X500, composez le pack()

  • 2 - est plus portable
23
répondu ring bearer 2010-03-15 23:57:13

suffit d'utiliser:

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

il n'y a pas besoin d'un JPanel pour être là, si vous voulez juste régler la taille du cadre.

24
répondu Michael 2011-05-29 17:30:06

peu importe, j'ai compris:

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

    myJPanel.setPreferredSize(new Dimension(500,500));
    add(myJPanel);
    pack();
}
7
répondu igul222 2010-03-15 23:58:33