Вопрос

Я создал программу Java, которая показывает сетку кнопок и ярлыков, и я хочу знать, как наладить ограничения на этикетках и кнопках, чтобы они не повторно размер, когда окно вытаскивается .. Кто-нибудь может помочь, пожалуйста?

Это мой класс 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);

        }


}

И это мой основной класс

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());
 }
}
Это было полезно?

Решение

Поместите этикетки и кнопки в JPanel, а затем добавьте это JPanel на ваш GridLayout. GridLayout Автоматически изменения размера компонентов, чтобы соответствовать размеру ячейки, в которую они помещаются, и когда JFrame Изменен, он будет регулировать размер компонентов по мере необходимости. Если вы поместите их в JPanelS только JPanel В этой ячейке будет изменен, а не компоненты.

РЕДАКТИРОВАТЬ

В дополнение к этому, это Java Practice, чтобы назвать все классы с помощью заглавной буквы, ваша layout должно быть Layout. Анкет Однако имя Layout точно не передает цель класса Layout как ваш класс не а макет, это JFrame. Анкет Возможно LayoutFrame было бы лучшим названием класса.

И (это по умолчанию Java Practice) переменные должны быть Camelcase, начиная с строчной буквы и последующих слов, имеющих заглавную букву, например, thisIsAVariable. Анкет В качестве альтернативы вы могли бы использовать подчеркивание, что не является нормальной практикой Java, this_is_a_varaible. Анкет Учитывая, что в классах Java обычно начинаются с заглавной буквы, а переменные начинаются с строчной буквы layout Lay = new layout(); Выглядит очень странно и немного запутанно с первого взгляда.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top