studio programacion para móviles libros gratis español edición desarrollo curso aplicaciones java swing frame

java - para - manual programacion android español pdf



Java Swing establece el tamaño de marco "real"(interior) (6)

Este es un ejemplo de cómo configurar el tamaño de JPanel y empaquetar el marco:

JFrame frame = new JFrame(); JPanel panel = new JPanel(); panel.setPreferredSize(new Dimension(200, 200)); frame.add(panel); frame.pack(); frame.setVisible(true);

¿Intentaste algo como esto?

Tengo un JFrame que contiene un solo JPanel. He intentado configurar el tamaño del Panel y empaquetar el marco, pero eso no tiene ningún efecto.

Si configuro el tamaño de JFrame, cambiará el tamaño para que incluya la barra de título y los bordes. ¿Cómo configuro el "tamaño real" para que no incluya la barra de título y los bordes?

Ejemplo:

Gracias de antemano, chicos.


La configuración del tamaño real del espacio utilizable en JFrame se podría realizar mediante la configuración del tamaño preferido del contenedor en el createComponents(Container container) . Hecho de esta manera, omite la configuración del tamaño de todo el JFrame a través de setPreferredSize(new Dimension (width, length) en el método run() . Por lo tanto, el código se verá así:

@Override public void run() { JFrame frame = new JFrame(); // other code ... this.createCompoents(frame.getContentPane()); } private void createCompoents(Container container) { // other code ... container.setPreferredSize(new Dimension(width, length)); }


Puede configurar el tamaño preferido y el paquete de llamadas de contentPane en el JFrame, pero en general es mejor dejar que los componentes se dimensionen según sus tamaños preferidos según lo determinen sus administradores de diseño.


Si desea obtener el borde del marco, primero use el paquete en su marco y luego obtenga los recuadros del marco como en el siguiente código:

frame.pack(); Insets insets = frame.getInsets(); int frameLeftBorder = insets.left; int frameRightBorder = insets.right; int frameTopBorder = insets.top; int frameBottomBorder = insets.bottom;

Es mejor usar el método de paquete justo después de su método setResizable (booleano) , ya que, por alguna razón, el tamaño del paquete cambia sus bordes de marco, pero si no usa el método de cambio de tamaño, use el método de paquete justo al inicio del constructor de cuadros.


Si establece el tamaño preferido de JPanel, entonces el método pack () de JFrame lo respetará.


Use el método .getInsets en JFrame que le brinda las dimensiones de los tamaños alrededor del área de no clientes.

Luego agréguelo a su tamaño deseado y configure el tamaño usando setSize .