/ / setPreferreSize () dans paintComponent - size, jpanel, paintcomponent

setPreferreSize () dans paintComponent - size, jpanel, paintcomponent

Je calcule la largeur d'un JPanel à partir dedans sa méthode paintComponent (). Le calcul fonctionne, mais le JPanel n’a pas la taille préférée. Si je redimensionne la fenêtre, tout est comme il se doit et le JPanel a la bonne taille. J'essayais de placer la méthode repaint () à différents endroits (par exemple, dans le constructeur de JPanel ou du JFrame dans lequel il est incorporé), mais je n'ai pas trouvé de solution permettant d'afficher le cadre avec la taille correcte.

public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setFont(new Font("SANS_SERIF",Font.PLAIN,14));
FontMetrics metrics;
...

boxwidth = ... dependent on width and height of some Strings

...

if (getPreferredSize().getWidth()<boxwidth+100){
setPreferredSize(new Dimension(boxwidth+100,600));
}

...

}

J'aimerais savoir si je peux définir la taille préférée à partir de la méthode paintComponent () ou si je peux obtenir les métriques d'une autre manière, pour pouvoir calculer largeur de la boîte en dehors de paintComponent ().

Merci Michael.

Réponses:

0 pour la réponse № 1

Appelez pack () sur votre JFrame une fois que vous avez défini les tailles préférées, il redimensionnera le JFrame pour s’adapter aux tailles préférées de tous les sous-composants; la façon dont cette méthode est cachée est assez ennuyeuse.

http://docs.oracle.com/javase/7/docs/api/java/awt/Window.html#pack()