Java Swing - Posicionar ventanas

Iniciado por Flamethrower, 3 Octubre 2013, 03:00 AM

0 Miembros y 1 Visitante están viendo este tema.

Flamethrower

Saludos,

Tengo una duda respecto del posicionamiento de ventanas con swing. Pimero tengo varios JDialog desplegables, es decir que incorporarán paneles si se producen ciertos eventos. El problema es que algunas de las ventanas desplegadas son un poco largas y en algunas pantallas el menú final se pierde en el borde inferior.

Antes que nada, mi proyecto no usa Layouts (y no dispongo de más tiempo como para aprender a usarlos e implementarlos). Cosas de las que me entero tarde -_-

Mi problema anterior se pseudo-soluciona con el método setLocationRelativeTo(null); pero me gustaría más que dicho Dialog se pueda mover por el usuario y que al momento de desplegarse, sólo se reposicione verticalmente.
¿Se puede sólo centrar verticalmente el Dialog sin importar en que posición horizontal se encuentre? Cuando digo se puede, no contemplo la posibilidad de que no, sino más bien aludo a la dificultad de la tarea xD!

Luego, tengo un JFrame como ventana inicial de la aplicación que he intentado hacer que ocupe el tamaño completo de la pantalla sin resultado positivo.
He utilizado el método SetSize(arg); con argumento un objeto Dimension creado con distintos parámetros, y la ventana permanece inmutable -_-

Agradezco desde ya las lecturas y cualquier ayuda sobre el tema.
Por cierto, trabajo sobre Netbeans. También he jugado un poco con las propiedades del JFrame desde la vista de diseño, y nada... Por ahí yo mismo he bloqueado de alguna forma la ventana :P!

Buena vida.

Mine Sweeper

No estoy muy seguro de como hacer lo que quieres hacer, pero lo de hacerlo en full screen si te puedo ayudar


setExtendedState( MAXIMIZED_BOTH );


me dices si te sirve

Flamethrower

#2
Coloque el método en el constructor del JFrame y nada.

Anteriormente probé con:
float escalar = 0.5F;
int ancho = (int)(Toolkit.getDefaultToolkit().getScreenSize().width*escalar);
int alto = (int)(Toolkit.getDefaultToolkit().getScreenSize().height*escalar);
principal.setSize(ancho,alto);

Y también con variaciones de los anteriores métodos y parámetros.

No he seguido buscando porque tengo cuestiones del programa con más prioridad (como terminar su funcionalidad xD!). Pero me da pensar que la dificultad esta por algo que he tocado... Ya miraré el código con más detalle.

Gracias por la sugerencia. Si tienes más ideas, bienvenido eres :P!



EDITO:
Solucioné el problema del JFrame. En mi clase principal el método main invocaba a dicho Frame mediante un show("JFrame"); Quité eso y coloqué simplemente new "JFrame"(); Agregando un setVisible(true); en el constructor del JFrame.

Ahora tengo otro problema. Este JFrame muestra dos JPanel según un par de opciones. El tema es que no puedo hacer que aparezca un JPanel sin hacer un pack(); lo cual me conduce a reducir el tamaño del JFrame.
La pregunta es: ¿Como agregar o quitar paneles en un JFrame manteniendo su formato? Ya sea el inicial o el que el usuario dejo moviendo la ventana.

Saludos.

ThinkByYourself

No lo sé, pero puede que esta sea una de esas cosas que se puedan solventar usando un layout, y el layout por excelencia en swing es gridbaglayout. Mi opinión, como no he entendido del todo el problema, no sé decirte con detalle si es lo que estás buscando. Si buscas encuentras!
https://www.youtube.com/watch?v=Dw4rtERX0zw
Un saludooooo!
No te voy a engañar.
Todos hemos sido programados para normalizar la psicopatía de las élites económicas y políticas, y para realimentar su patrón de ciega codicia.

Chuidiang

Hola:

Una vez visible una ventana, si añades o quitas componentes, estos no se pintan, siendo necesario redimensionar la ventana o hacer algo que obligue al repintado. Debes llamar al método updateUI() para hacer que se redibuje todo, no valen método como repaint().

Se bueno.