Cómo redimensionar tamaño de los componentes al modificar tamaño de JFrame

Iniciado por Leopola, 23 Febrero 2015, 18:32 PM

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

Leopola

Hola Muchachos!

Acá un ejemplo mas que sencillo:

package practica2;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Ventana extends JFrame{

private JButton jp1, jp2;

public Ventana(){

setLayout(null);

setBounds(330, 80, 400, 400);

jp1=new JButton("Boton 1");

jp1.setBounds(10, 10, 100, 50);

jp2=new JButton("Boton 2");

jp2.setBounds(260, 300, 100, 50);

add(jp1);
add(jp2);

setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}


Ocurre que he probado horas y horas con los distintos Layout de Java, GridLayout, FlowLayout, etc.
Pero ninguno me convence. Deseo colocar los componentes a gusto, pero el problema natural es que al modificar el tamaño del JFrame con el mouse los componentes quedan en su sitio y se pierden (ocultan).
He leído por ahí que existe un evento que me avise cuando es modificado el JFrame. Para así modificar en ese momento los componentes.
Necesitaría un ejemplo sabiendo el evento(que no lo se), cómo al modificar el JFrame, también lo hagan en este caso estos dos botones que puse como ejemplo.
Y si existe un método para indicarle al JFrame que no lo minimice mas de, por ejemplo, 400x250 por decir un valor.

Desde ya muchas gracias. Saludos Leopoldo.

Leopola

Acá encontré la última de mis preguntas.
El método es:

JFrame.setMinimumSize(new Dimension(350, 350)); // valores de ejemplo...

Me queda lo mas difícil...

Saludos Leopoldo.

Usuario Invitado

Siempre ha sido un problema redimendionar o reacomodar los componentes en AWT/Swing. Lo mejor que puedes lograr es con GridBagLayout.

Siempre recomiendo a los programadores Java SE empezar a familiarizarse con JavaFX. AWT/Swing ya han quedado obsoletos. Ahora con JavaFX puedes hacer aplicaciones ricas de internet (RIA por sus siglas en inglés).

Con JavaFX tienes muchas ventajas:

  • Componentes modernos (como datepicker).
  • Buen soporte para el patrón MVC.
  • Soporte para CSS y parcial para CSS3.
  • No se exige usar código para crear las interfaces gráficas ya que se puede usar XML adaptado llamado FXML. Incluso hay un GUI builder para realizar las interfaces con solo arrastrar componentes y generando código FXML.

    Quizás con la ayuda de CSS puedas hacer por lo menos un poco más flexible visualmente tu aplicación.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein

Leopola

Muchas gracias por la respuesta.
JavaFX, no sabía de su existencia, ni que esta dejando sin uso a AWT/Swing!!!
Me voy a poner a leer a ver que encuentro sobre esto! gracias! Saludos Leopoldo.

Leopola

Ahí le estoy tomando la mano al GridBagLayout
Al principio como todo cuesta entender, luego lo vas consiguiendo. Anda muy bien para lo que necesitaba.
Gracias. Saludos Leopoldo.

.rn3w.

tendrias que trabajar con layouts!!!
creo que tambien con la funcion pack();


Usuario Invitado

Si no me equivoco, pack ajusta la ventana al tamaño de los componentes. Si se desea un layout responsivo, se necesitaría escuchar por eventos de resize y obtener las medidas para aplicarlas mediante ecuaciones a los componentes y layouts para que tengan un tamaño adecuado.

PD: Si solucionaste tu problema no olvides ponerle el check verde al título del tema para indicar que está resuelto.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein

3n31ch

JavaFX no me gusta! BUUUUH (hasta que implementen bien las funcionalidades de CSS para posicionar elementos no me gustara [Y aclaro que los Layout tampoco. En resumen no me gusta como controla java sus gráficos]).

Exactamente como dice Gus pack() ajusta el panel de tal forma que todos sus componentes quepan perfectamente, (pero es necesario definir tamaños con setPreferredSize();

Usuario Invitado

Cita de: Nac-ho en 24 Febrero 2015, 16:22 PM
JavaFX no me gusta! BUUUUH (hasta que implementen bien las funcionalidades de CSS para posicionar elementos no me gustara

Pides mucho hermano :xD. No es el objetivo de un programa de escritorio valerse de CSS, pero me parece buena idea. Cierto es que aún la comunidad de Java no logra adaptar completamente CSS a JavaFX, imagino que será un arduo trabajo y esperemos que al final lo consigan porque viendo como van ahora, da muy buenas señales de avanzar en el futuro.

Igual, JavaFX es un muy buen framework. Debería adoptarse más por los programadores, ya es hora de dejar a Swing y utilizar JavaFX para los proyectos desktop ;)
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein