web-dev-qa-db-fra.com

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

J'essaie de faire un jframe avec une zone de contenu utilisable exactement 500x500. Si je fais ça ...

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

... Je reçois une fenêtre dont la taille réelle 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 de la barre de titre. Comment puis-je atteindre cet objectif?

21
igul222

vous pouvez essayer un couple de 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 ajoutez un JPANEL au volet de contenu du cadre et définissez simplement la taille préférée/minimale de JPanel sur 500x500, appelle ()

  • 2- est plus portable
26
ring bearer

Utilisez simplement:

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

Il n'ya pas besoin d'un JPanel d'être là, si vous voulez simplement définir la taille du cadre.

26
Michael

Peu importe, je l'ai compris:

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

    myJPanel.setPreferredSize(new Dimension(500,500));
    add(myJPanel);
    pack();
}
7
igul222