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());
 }
}
¿Fue útil?

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 JPanels 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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top