duda GUI

elkin0727
17 de Febrero del 2005
¿como hago para separar botones o componentes al momento de mostrar la GUI(Como en VISUAL BASIC)?, lo digo porque con los layout no se como hacerlo, o no se que metodo utilizar.

Otra preguntica... que metodo utilizo, para que al iniciar el programa me abra la ventana en el centro de la pantalla?...
gracias....

jelajor
17 de Febrero del 2005

En cuanto a lo primero, tendrás que leerte bastante sobre Layouts (el tutorial de swing de la página de java de sun es la referencia y hay una traducción al castellano muy buena en esta misma página en "http://www.programacion.com/java/tutorial/swing/", aunque no se si está la información sobre el manejo de layouts). Yo lo que hago es crear paneles en los que pongo el contentpane a null, y luego utilizo algún diseñador para
situar los elemento en sus posiciones mediante valores numéricos, tal como lo hace VB, usando algún diseñador de interfaces (yo uso eclipse) pero esta no es ni por asomo la mejor solución para java, ya que los textos y elementos utilizan diferentes tamaños dependiendo de su look&feel, lo que hace que la aplicación, aunque sea igual de portable y se ejecute igual en otros sistemas no se vea tan bien como tu quieres (es un pequeño precio a pagar por ser un poco vago, pero que le vamos a hacer)

En cuanto a lo segundo, te mando un pequeño método que puedes incluir en la ventana(Frame, JFrame, JDialog, ...) que estés desarrollando, lo que hace que se centre en mitad de pantalla (tambien puedes hacer que sea un
método estático que reciba el frame a centrar como parámetro).

private void centrarEnPantalla() {
java.awt.Toolkit t = java.awt.Toolkit.getDefaultToolkit();
Dimension dimension_pantalla = t.getScreenSize();
// Esto es por si el tamaño inicial de la ventana es mayor que el de la
//pantalla.
if(this.getWidth() > dimension_pantalla.width ||
this.getHeight() > dimension_pantalla.height) {
int x = 0;
int y = 0;
if(this.getWidth() > dimension_pantalla.width) {
x = - (this.getWidth() - dimension_pantalla.width);
}
if(this.getHeight() > dimension_pantalla.height) {
y = - (this.getHeight() - dimension_pantalla.height);
}
this.setLocation(new Point(x, y));
return;
}

int x_pantalla = dimension_pantalla.width / 2;
int y_pantalla = dimension_pantalla.height / 2;
int x_frame = this.getSize().width / 2;
int y_frame = this.getSize().height / 2;
int x_pos = x_pantalla - x_frame;
int y_pos = y_pantalla - y_frame;
this.setLocation(new Point(x_pos, y_pos));
}

Bueno, eso es todo, creo.