Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Ajustar tamaño del interior de un JFrame

Estas en el tema de Ajustar tamaño del interior de un JFrame en el foro de Java en Foros del Web. Declaro un marco con JFrame y quiero ajustar el tamaño pero sin contar los márgenes del marco ni la barra superior. Es decir quiero ajustarlo ...
  #1 (permalink)  
Antiguo 12/08/2014, 05:16
Avatar de loganbdn  
Fecha de Ingreso: enero-2009
Ubicación: Badalona
Mensajes: 114
Antigüedad: 15 años, 11 meses
Puntos: 1
Ajustar tamaño del interior de un JFrame

Declaro un marco con JFrame y quiero ajustar el tamaño pero sin contar los márgenes del marco ni la barra superior.
Es decir quiero ajustarlo para que dentro tenga un espacio de 768 x 544.
Ademas dentro de este espacio quiero colocar una ventana que hereda de un Canvas de 640x400 que esta en un FlowLayout que debería estar centrado.

El código que tengo actualmente es este pero no sirve porque me hace un marco contando el tamaño que ocupa márgenes y barra superior del JFrame.

Código:
Ventana ventana = new Ventana();                        
ventana.setSize(640,400);                               
JFrame marco = new JFrame("Prueba Graficos");  
marco.setSize(768, 544); // Crea marco pero con tamaño de márgenes + barra superior
marco.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER));
marco.getContentPane().add(ventana); 
marco.setVisible(true);
  #2 (permalink)  
Antiguo 12/08/2014, 06:01
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 2 meses
Puntos: 454
Respuesta: Ajustar tamaño del interior de un JFrame

Hola:

Prueba esto a ver

Código Java:
Ver original
  1. Ventana ventana = new Ventana();                        
  2. ventana.setSize(640,400);                              
  3. JFrame marco = new JFrame("Prueba Graficos");  
  4.  
  5. // Asi das el tamaño a la parte interna del JFrame
  6. marco.getContentPane().setPreferredSize(new Dimension(768, 544));
  7.  
  8. marco.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER));
  9. marco.getContentPane().add(ventana);
  10.  
  11. // Esto da el tamaño necesario al JFrame
  12. marco.pack();
  13.  
  14. marco.setVisible(true);

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 12/08/2014, 06:26
Avatar de loganbdn  
Fecha de Ingreso: enero-2009
Ubicación: Badalona
Mensajes: 114
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Ajustar tamaño del interior de un JFrame

Funciona, aunque haciendo un FlowLayout.LEFT para situarlo totalmente a la izquierda por ejemplo, veo que hay un pequeño espacio o borde del panel entre el FlowLayout y el marco de la ventana. ¿ Como se quitaria este borde ?
  #4 (permalink)  
Antiguo 12/08/2014, 06:39
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 2 meses
Puntos: 454
Respuesta: Ajustar tamaño del interior de un JFrame

A mi me funcionó sin necesidad de poner ese LEFT que dices.

Mira el constructor de FlowLayout que lleva parámetros de gap a ver si apaña algo. Mira también en marco.getContentPane() si tienes métodos para fijar borders, insets, paddings, etc.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 12/08/2014, 07:16
Avatar de loganbdn  
Fecha de Ingreso: enero-2009
Ubicación: Badalona
Mensajes: 114
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Ajustar tamaño del interior de un JFrame

Cita:
Iniciado por chuidiang Ver Mensaje
A mi me funcionó sin necesidad de poner ese LEFT que dices.

Mira el constructor de FlowLayout que lleva parámetros de gap a ver si apaña algo. Mira también en marco.getContentPane() si tienes métodos para fijar borders, insets, paddings, etc.

Se bueno.
Funciona sin el LEFT lo que pasa que quería ponerlo para saber si me dejaba borde entre el FlowLayout y la Ventana.

Para quitar el borde he tenido que usar setBorder y BorderFactory.createEmptyBorder pero sin usarlos con getContentPane() ya que curiosamente no reconoce el setBorder.

Alfinal lo he dejado asi:

Código:
Ventana ventana = new Ventana();                        	
ventana.setSize(640,400);                               	
JFrame marco = new JFrame("Prueba Graficos");

JPanel content = new JPanel();
content.setPreferredSize(new Dimension(768, 544));
content.setBackground(Color.BLUE);
content.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));   // Border 0
content.setLayout(new FlowLayout(FlowLayout.LEFT,0,0));         // Offset x=0, y=0
content.add(ventana);
marco.getContentPane().add(content);                       // O poner marco.add(content);

marco.pack(); 										
marco.setVisible(true);
Gracias por la ayuda !

Etiquetas: interior, jframe, tamaño
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:59.