Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: K-YreX en 29 Abril 2020, 16:18 PM

Título: Dimensiones reales de un componente gráfico (JFrame)
Publicado por: K-YreX 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 (java) [Seleccionar]

public class App {
  private Ventana miVentana;

  public static void main(String[] args){
    miVentana = new Ventana();
    miVentana.setSize(200, 200);
    miVentana.setVisible(true);
  }
}

class Ventana extends JFrame {
  public Ventana(){
    getContentPane().setLayout(null);
  }
}


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:
Título: Re: Dimensiones reales de un componente gráfico (JFrame)
Publicado por: EdePC 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
(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.
Título: Re: Dimensiones reales de un componente gráfico (JFrame)
Publicado por: K-YreX 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.