/ / setPreferreSize () en paintComponent - tamaño, jpanel, paintcomponent

setPreferreSize () en paintComponent - tamaño, jpanel, paintcomponent

Estoy calculando el ancho de un JPanel desdedentro de su método paintComponent (). El cálculo funciona, pero el JPanel no tiene el tamaño preferido. Si redimensiono la ventana, todo es como se supone que debe ser y el JPanel tiene el tamaño correcto. Estaba tratando de poner el método repaint () en diferentes lugares (por ejemplo, en el constructor de JPanel o JFrame en el que está incrustado), pero no encontré una solución que mostrara el marco con el tamaño correcto.

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));
}

...

}

Me gustaría saber si puedo establecer el tamaño preferido dentro del método paintComponent () o si puedo obtener las métricas de otra manera, para poder calcular ancho de caja fuera de paintComponent ().

Gracias michael

Respuestas

0 para la respuesta № 1

El paquete de llamadas () en su JFrame después de que haya establecido los tamaños preferidos, cambiará el tamaño del JFrame para que se ajuste a los tamaños preferidos de todos los subcomponentes, es bastante molesto lo bien oculto que está este método.

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