Java - Botones malditos

 
Vista:

Botones malditos

Publicado por Mugutu (11 intervenciones) el 10/09/2007 10:14:17
Saludos!

Tengo una ventana con BorderLayout y tres paneles, uno para el norte, otro para el centro y otro para el sur que contienen los componentes. En el panel que va al sur de la ventana hay unos botones que me estan haciendo la vida imposible. Les asigno su posición y tamaño con setBounds() y no se muestran correctamente ni el tamaño ni la posición indicada. A continuación dejo la porción de código correspondiente por si veis algo que esté haciendo mal...

//ELEMENTOS DEL PANEL INFERIOR
pnlInf = new JPanel();

Icon img3 = new ImageIcon(ClassLoader.getSystemResource("ok.png"));
Icon img4 = new ImageIcon(ClassLoader.getSystemResource("cancel.png"));

btnOk = new JButton(img3);
btnOk.addActionListener(this);
btnOk.setBounds(140,10,50,50);

btnCancel = new JButton(img4);
btnCancel.addActionListener(this);
btnCancel.setBounds(220,10,50,50);

//AÑADO LOS COMPONENTES AL PANEL
pnlInf.add(btnOk);
pnlInf.add(btnCancel);

//AÑADO EL PANEL AL JFRAME
add(pnlInf, BorderLayout.SOUTH);

En un principio pensé que podría ser cosa del Layout del panel, asi que, como uso setBounds para ordenar los componentes le indique al panel que tuviera un layout null, pero si hago esto los componentes del panel desaparecen...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Botones malditos

Publicado por chuidiang (950 intervenciones) el 10/09/2007 17:59:32
Hola:

El layout que tenga el panel pnlInf es el que decide la posición de los botones, así que es inútil que llames a setBounds() de los botones. Tienes dos posibles soluciones

Una es ponerle a ese panel un setLayout(null), de forma que ahora sí te hará caso a los setBounds() de los botones. De todas formas, no es buena opción porque si redimensionas la ventana, posiblemente los botones salgan mal. Tendrías que andar calculando tú las posiciones según el tamaño de la ventana y cambiando los setBounds() cada vez que haya un cambio de ventana.

La otra opción es ponerle un layout adecuado al pnlInf de forma que deje los botones donde tú quieras. Uno posible es un FlowLayout. Otro más versátil pero más complejo un GridBagLayout.

Echa un ojo a este enlace http://www.chuidiang.com/chuwiki/index.php?title=Uso_de_Layouts

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar