Размещение элементов на JFrame - Java

Формулировка задачи:

Подскажите пожалуйста, какой параметр необходимо поменять чтобы элементы на фрейме не зависели друг от друга? К примеру, если я хочу поставить label на label, или кнопку поместить на картинку. Ибо когда пытаюсь переместить, элементы сами двигаются, и при этом меняют размер формы. В интернете нашел что то про Layout но то ли это? И если да, то как его изменить?

Код к задаче: «Размещение элементов на JFrame - Java»

textual
import javax.swing.*;
 
import java.awt.Color;
import java.awt.Dimension;
 
/*
 * Класс главного окна
 * */
public class MainFrame extends JFrame {
    //Конструктор главного окна
    public MainFrame() {
        setTitle("Главное окно");
        //Устанавливаем размеры главного окна
        setSize(400, 500);
        //Создаем объект панели, на котором будет отображаться кнопка
        JPanel panel = new JPanel();
        //Добавляем BoxLayout
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
        //Создаем label1
        JLabel label1 = new JLabel("Hello 1");
        //Делаем видимым заливку фона
        label1.setOpaque(true);
        //Устанавливаем фон зеленым
        label1.setBackground(Color.green);
        //Устанавливаем максимальный размер label1
        label1.setMaximumSize(new Dimension(300, 300));
        //Добавляем BoxLayout
        label1.setLayout(new BoxLayout(label1, BoxLayout.Y_AXIS));
        //Создаем label2
        JLabel label2 = new JLabel("Hello 2");
        //Выравниваем label2 по центру оси X
        label2.setAlignmentX(JComponent.CENTER_ALIGNMENT);
        //Устанавливаем минимальный размер
        label2.setMinimumSize(new Dimension(200, 200));
        //Устанавливаем максимальный размер
        label2.setMaximumSize(new Dimension(200, 50));
        //Делаем видимым фон
        label2.setOpaque(true);
        //Устанавливаем фон красным
        label2.setBackground(Color.red);
        //Добавляем label2 в label1
        label1.add(label2);
        //Добавляем label1 в panel
        panel.add(label1);
        //Дабавляем панель на главное окно
        add(panel);
        //Делаем окно по центру
        setLocationRelativeTo(null);
        //Делаем минимальные размер окна
        setMinimumSize(new Dimension(350, 350));
        //Делаем видимым главное окно
        setVisible(true);
    }
   
    public static void main(String[] args)
    {
        //Запускаем главное окно
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new MainFrame();
            }
        });
    }
}

6   голосов, оценка 3.667 из 5


СОХРАНИТЬ ССЫЛКУ