Diseño de cuadrícula Java
-
26-10-2019 - |
Pregunta
He creado un programa Java que muestra una cuadrícula de botones y etiquetas y quiero saber cómo enfrentar una restricción en las etiquetas y los botones para que no vuelvan a tamaño cuando se arrastra la ventana ... ¿Alguien puede ayudarlo?
Esta es mi clase de GridLayout
package JFrameTester;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class layout extends JFrame {
JButton button1,button2,button3;
JLabel label1,Label2,Label3;
public layout (){
setLayout(new GridLayout(2, 2));
button1 = new JButton ("button1");
add(button1);
label1 = new JLabel ("label1");
add(label1);
button2 = new JButton ("button1");
add(button2);
Label2 = new JLabel ("Label2");
add(Label2);
button3 = new JButton ("button1");
add(button3);
Label3 = new JLabel ("Label3");
add(Label3);
}
}
Y esta es mi clase principal
public class JFrameTester {
/**
* @param args
*/
public static void main(String[] args) {
layout Lay = new layout();
Lay.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Lay.setVisible(true);
// JFrame frame = new JFrame("BUY COMPUTER");
Lay.setSize(800, 600);
//frame.pack();
// frame.setVisible(true);
Lay.addWindowListener(new MyWindowListener());
}
}
Solución
Coloque las etiquetas y los botones dentro de un JPanel
, y luego agregar eso JPanel
para usted GridLayout
. GridLayout
cambia de tamaño automáticamente los componentes para que se ajusten al tamaño de la celda en la que se colocan y cuando un JFrame
se redimensiona, ajustará el tamaño de los componentes según sea necesario. Si los coloca en JPanel
s solo el JPanel
En esa celda se cambiará el tamaño, no los componentes.
EDITAR
Además de eso, es una práctica de Java nombrar todas las clases con una letra mayúscula, su layout
debiera ser Layout
. Sin embargo, el nombre Layout
no transmite con precisión el propósito de la clase Layout
Como tu clase no es a Diseño, es un JFrame
. Quizás LayoutFrame
sería un mejor nombre de clase.
Y (esta es la práctica de Java predeterminada) las variables deben ser CamelCase, comenzando con una letra minúscula y palabras posteriores que tienen una letra mayúscula, por ejemplo thisIsAVariable
. Alternativamente, podría usar subrayos que no es una práctica de Java normal, this_is_a_varaible
. Dado que en las clases de Java generalmente comienzan con una letra mayúscula y las variables comienzan con una letra minúscula, la declaración layout Lay = new layout();
Se ve muy extraño y un poco confuso a primera vista.