elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Dimensiones reales de un componente gráfico (JFrame)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Dimensiones reales de un componente gráfico (JFrame)  (Leído 2,125 veces)
K-YreX


Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Dimensiones reales de un componente gráfico (JFrame)
« en: 29 Abril 2020, 16:18 pm »

Estaba haciendo unas ventanas en Java cuando me dio por comprobar si realmente el tamaño de éstas se correspondía con el tamaño que había definido en el código fuente y he visto que no es así, no coinciden las medidas.
He estado leyendo sobre las dimensiones del JFrame (heredadas de Window), las dimensiones del Layout (que he probado también a usar diferentes tipos incluso null), los métodos set y get de height, width, minimumSize, preferredSize, bounds,... y todo lo que he ido encontrando por el camino; y no consigo unas conclusiones.

Os dejo un pequeño código de lo último que he probado y los resultados obtenidos:
Código
  1. public class App {
  2.  private Ventana miVentana;
  3.  
  4.  public static void main(String[] args){
  5.    miVentana = new Ventana();
  6.    miVentana.setSize(200, 200);
  7.    miVentana.setVisible(true);
  8.  }
  9. }
  10.  
  11. class Ventana extends JFrame {
  12.  public Ventana(){
  13.    getContentPane().setLayout(null);
  14.  }
  15. }

Establezco el layout a null para evitar que el layout pueda influir en las medidas de la ventana. Le doy un tamaño de 200 x 200 (que no choca con el tamaño mínimo de la ventana) pero al mostrar la ventana esta mide:
  • 234 x 242 (contando la barra de título)
  • 232 x 203 (contando el espacio interior de la ventana. Sin contar barra de título ni bordes)

He probado también a usar el método setBounds() para establecer la posición de la esquina superior izquierda en las coordenadas (0,0), es decir, que la ventana debería aparecer pegada también a la esquina superior izquierda, pero realmente tampoco es así. En el eje X se desplaza 8 píxeles a la derecha, es decir, que la esquina superior izquierda de la ventana aparece en las coordenadas (8,0).
Código
  1. // Sustituir el setSize(200, 200) del codigo anterior por:
  2. miVentana.setBounds(0, 0, 200, 200);

Sé que es un tema muy quisquilloso pero no sé de qué sirve poder establecer tamaños a las ventanas si luego no van a ser reales...


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.054



Ver Perfil
Re: Dimensiones reales de un componente gráfico (JFrame)
« Respuesta #1 en: 29 Abril 2020, 17:16 pm »

Que raro, yo lo he compilado en Java8, y revisado sus pixeles con AHK WinSpy, Microsoft Spy++, Nirsoft WinExplorer y HxD Property Edit y me dan 200x200:

https://i.ibb.co/26B77Tz/200x200.png


Aunque me tiene algo consternado eso de ClientArea, ClientRect y WindowRect ... voy a buscar info, supongo que tendrá que ver con la densidad de pixeles o algo, porque deberían de ser iguales digo yo.


En línea

K-YreX


Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Dimensiones reales de un componente gráfico (JFrame)
« Respuesta #2 en: 29 Abril 2020, 18:45 pm »

Yo lo estaba ejecutando con Java 11 y desde Eclipse.
He probado a ejecutarlo directamente desde la consola y con Java 8 y el tamaño se reduce por debajo de 200.
No sabía yo que iba a haber tantos misterios en una cosa como esta.
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Dimensiones Avatar
Sugerencias y dudas sobre el Foro
Lionheart12 3 1,957 Último mensaje 4 Abril 2007, 14:18 pm
por H4RR13R
Incluir Componente grafico en un JPanel
Java
Fran88 1 4,356 Último mensaje 21 Agosto 2009, 19:54 pm
por Fran88
Explicando las 10 dimensiones « 1 2 3 »
Foro Libre
erest0r 20 6,223 Último mensaje 20 Febrero 2014, 23:08 pm
por erest0r
4 dimensiones
Foro Libre
@synthesize 6 2,132 Último mensaje 17 Marzo 2015, 12:18 pm
por ivancea96
Algoritmo en dos dimensiones
Programación C/C++
DanFire 5 2,494 Último mensaje 16 Abril 2016, 14:48 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines