Размещение элементов на JFrame - Java
Формулировка задачи:
Подскажите пожалуйста, какой параметр необходимо поменять чтобы элементы на фрейме не зависели друг от друга? К примеру, если я хочу поставить label на label, или кнопку поместить на картинку. Ибо когда пытаюсь переместить, элементы сами двигаются, и при этом меняют размер формы. В интернете нашел что то про Layout но то ли это? И если да, то как его изменить?
Решение задачи: «Размещение элементов на JFrame»
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();
}
});
}
}