Layouts і абсолютне позиціонування в java swing, java swing і інша джава

Створення програми на Java Swing включає в себе створення графічного інтерфейсу користувача. Для цього в розпорядження розробника бібліотека Java Swing надала достатньо великий набір компонентів. Щоб розташувати компоненти так, як хоче розробник необхідно скористатися менеджерами компонування (layout managers) або абсолютним позиціонуванням.

Абсолютне позиціонування - завдання точного положення і розміру компонентів. При використанні певного layout manager розробник «точно» не вказує розташування компонентів і їх розмір. Зараз подивимося, як працювати з абсолютним позиціонуванням.

Розглянемо приклад. У нас є контейнер JPanel, на якому ми хочемо розмістити деякі компоненти. Розмір і розташування кожного компонента хочемо задати точно по пікселям. Що для цього необхідно зробити?

Спочатку потрібно сказати контейнеру про те, що ми не будемо використовувати layout manager. Для цього викликаємо метод setLayout у контейнера і передаємо туди в якості параметра null.

JPanel panel = new JPanel ();
panel.setLayout (null);

Далі необхідно створити компонент, який ми хочемо розмістити на контейнері і за допомогою методу setBounds задати у компонента його координати і розміри. Метод має чотири параметри. Перші два параметри відповідно X і Y координати самої лівої верхньої точки компонента, друга пара чисел - розміри: ширина і висота.

JButton button = new JButton ( "Button");
Button.setBounds (5, 5, 100, 30);

Подивимося тестове додаток.

Layouts і абсолютне позиціонування в java swing, java swing і інша джава

Створюємо панель. Встановлюємо їй layout в null. Потім створюємо кнопки, говоримо їм, де вони будуть розташовуватися і який розмір матимуть через setBounds і додаємо на панель.

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class TestFrame extends JFrame

public TestFrame () super ( "Test frame");
createGUI ();
>

public void createGUI () setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

JPanel panel = new JPanel ();
panel.setLayout (null);

JButton button1 = new JButton ( "Button 1");
button1.setBounds (5, 5, 85, 30);
panel.add (button1);

JButton button2 = new JButton ( "Button 2");
button2.setBounds (95, 40, 85, 30);
panel.add (button2);

JButton button3 = new JButton ( "Button 3");
button3.setBounds (185, 75, 85, 30);
panel.add (button3);

setPreferredSize (new Dimension (285, 145));
>

public static void main (String [] args) javax.swing.SwingUtilities.invokeLater (new Runnable () public void run () JFrame.setDefaultLookAndFeelDecorated (true);
TestFrame frame = new TestFrame ();
frame.pack ();
frame.setLocationRelativeTo (null);
frame.setVisible (true);
>
>);
>
>

Схожі статті