Tengo problemas con la posición de la GUI de mi aplicación. Eso significa que en Linux (Centos 6) aparece correctamente en la barra de tareas superior, pero en Windows 8.1 aparece detrás de la barra de tareas en la parte inferior de la pantalla. ¿Cuál puede ser el problema?
Estoy usando el siguiente código para establecer dimensiones. (He adjuntado pantallas a continuación)
UiConfig.getInstance().bottomRightUI(dispalyWidth, displayeHeight); setBounds(UiConfig.getInstance().getX(), UiConfig.getInstance().getY(), dispalyWidth, displayeHeight);Siguiente clase utilizada para obtener la dimensión dinámica de la pantalla actual
public class UiConfig { private static final UiConfig instance = new UiConfig(); public static UiConfig getInstance() { return instance; } public void bottomRightUI(int width, int height) { x = (int) ((screen_width - width)); y = (int) ((screen_height - height)); } public int getX() { return this.x; } public int getY() { return this.y; } }en linux
en ventanas
Para lograr la transparencia de la barra de tareas en Windows, debe informar el tamaño del escritorio como "sin la barra de tareas" para tener píxeles que se mezclen con el canal alfa de la barra de tareas. Cuando configura la barra de tareas para que no sea transparente, obtendrá el comportamiento que desea.
El sistema operativo alimenta a Swing / Java con los números en las dimensiones de la pantalla, y si recibe un conjunto de números, los usará como se le indicó.
La única solución para esto sería escribir un código de detección de "sistema operativo" personalizado, un código de detección de "barra de tareas" personalizado para los sistemas operativos problemáticos y escribir rutinas de reconfiguración de swing para "ajustar" las dimensiones a una huella más pequeña a pesar de lo que el sistema operativo está informando que la huella es. Este tipo de código es muy poco portátil y ciertamente no era necesario cuando se creó Swing, por lo que no está en Swing de forma nativa.