Java AWT Layouts
Библиотекаjava.awt предоставляет 5 основных макетов. Каждый макет имеет свое значение, и все они совершенно разные. Здесь, в этой статье, мы обсудим, как применить любой макет к фрейму или панели, а также вкратце обсудим каждый макет.
В библиотекеjava.awt доступны 5 макетов:
-
Макет границы
-
Макет сетки
-
GridBag Layout
-
Макет карты
-
Макет потока
1. Макет границы
BorderLayout - это макет, который упорядочивает компоненты по направлению. Структура границы делит рамку или панель на 5 секций - север, юг, восток, запад и центр. Каждый компонент может быть расположен в определенном направлении, передавая дополнительный аргумент.
BorderLayoutExample.java
package com.example;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Label;
import javax.swing.JFrame;
public class BorderLayoutExample extends JFrame {
public static void main(String[] args) {
BorderLayoutExample a = new BorderLayoutExample();
}
public BorderLayoutExample() {
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
BorderLayout b = new BorderLayout();
setTitle("Border Layout");
setSize(300, 300);
add(new Button("North"), BorderLayout.NORTH);
add(new Button("South"), BorderLayout.SOUTH);
add(new Button("East"), BorderLayout.EAST);
add(new Button("West"), BorderLayout.WEST);
add(new Button("Center"), BorderLayout.CENTER);
}
}
Выход

2. Макет сетки
AGridLayout - это более организованный способ размещения компонентов. Он делит рамку или панель в виде сетки, содержащей равномерно распределенные ячейки. Каждый компонент добавляется в определенную ячейку. Порядок размещения компонентов напрямую зависит от порядка их добавления в рамку или панель. На изображении ниже показан фрейм с 2 столбцами и 3 строками на основеGridLayout.
Аргументы конструктораGridLayout(int row,int cols) определяют размер сетки.
GridLayoutExample.java
package com.example;
import java.awt.Button;
import java.awt.GridLayout;
import javax.swing.JFrame;
public class GridLayoutExample extends JFrame {
public static void main(String[] args) {
GridLayoutExample a = new GridLayoutExample();
}
public GridLayoutExample() {
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
GridLayout g = new GridLayout(3, 2);
setLayout(g);
setTitle("Grid Layout");
setSize(300, 300);
add(new Button("Button 1"));
add(new Button("Button 2"));
add(new Button("Button 3"));
add(new Button("Button 4"));
add(new Button("Button 5"));
add(new Button("Button 6"));
}
}
Выход

3. GridBag Layout
GridBagLayout - это наиболее гибкий макет, который обеспечивает организованный, но гибкий способ размещения компонентов. Он предоставляет разработчикам возможность выбора точного местоположения компонента в сетке, его диапазона строк и столбцов, а также горизонтального и вертикального промежутка. На изображении ниже показанGridBagLayout. Он содержит кнопку 5, которая занимает 2 строки одновременно.
GridBagLayoutExample.java
package com.example;
import java.awt.Button;
import java.awt.CardLayout;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
public class GridBagLayoutExample extends JFrame {
public static void main(String[] args) {
GridBagLayoutExample a = new GridBagLayoutExample();
}
public GridBagLayoutExample() {
setSize(300, 300);
setPreferredSize(getSize());
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
GridBagLayout g = new GridBagLayout();
GridBagConstraints gbc = new GridBagConstraints();
setLayout(g);
setTitle("GridBag Layout");
GridBagLayout layout = new GridBagLayout();
this.setLayout(layout);
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridx = 0;
gbc.gridy = 0;
this.add(new Button("Button 1"), gbc);
gbc.gridx = 1;
gbc.gridy = 0;
this.add(new Button("Button 2"), gbc);
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.ipady = 20;
gbc.gridx = 0;
gbc.gridy = 1;
this.add(new Button("Button 3"), gbc);
gbc.gridx = 1;
gbc.gridy = 1;
this.add(new Button("Button 4"), gbc);
gbc.gridx = 0;
gbc.gridy = 2;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridwidth = 2;
this.add(new Button("Button 5"), gbc);
}
}
Выход

4. Макет карты
Это схема, которая используется редко и используется для объединения компонентов друг над другом. CardLayout позволяет компонентам находиться друг над другом и переключать любой компонент вперед в соответствии с требованиями. Описывать макет карты с помощью рисунка не имеет смысла. Поэтому давайте разберемся с небольшим примером. Рассмотрим код ниже:
mychoice.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
CardLayout cardLayout = (CardLayout)(e.getTarget().getParent().getLayout());
cardLayout.show(panel, (String)e.getItem());
}
});
Приведенный выше код связан как прослушиватель событий со списком. В соответствии с изменением значения комбо, компонент отображается. Для того, чтобы создать макет карты, вы можете использовать код ниже
CardLayoutExample.java
package com.example;
import java.awt.Button;
import java.awt.CardLayout;
import javax.swing.JFrame;
public class CardLayoutExample extends JFrame {
public static void main(String[] args) {
CardLayoutExample a = new CardLayoutExample();
}
public CardLayoutExample() {
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
CardLayout g = new CardLayout();
setLayout(g);
setTitle("Card Layout");
setSize(300, 300);
add(new Button("Button 1"));
add(new Button("Button 2"));
add(new Button("Button 3"));
add(new Button("Button 4"));
add(new Button("Button 5"));
add(new Button("Button 6"));
}
}
Выход

5. Макет потока
Как видно из названия,FlowLayout - это макет, который позволяет компонентам перемещаться к видимой части и достигать ее конца. AFlowLayout в основном помогает разработать более отзывчивый пользовательский интерфейс и сохранить плавность компонентов. На рисунке ниже показан фактический макет потока с 6 компонентами.
Поскольку это макет по умолчанию для фрейма или панели, он также может работать без явного применения макета.
FlowLayoutExample.java
package com.example;
import java.awt.Button;
import java.awt.FlowLayout;
import javax.swing.JFrame;
public class FlowLayoutExample extends JFrame {
public static void main(String[] args) {
FlowLayoutExample a = new FlowLayoutExample();
}
public FlowLayoutExample() {
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
FlowLayout g = new FlowLayout();
setLayout(g);
setTitle("Flow Layout");
setSize(300, 300);
add(new Button("Button 1"));
add(new Button("Button 2"));
add(new Button("Button 3"));
add(new Button("Button 4"));
add(new Button("Button 5"));
add(new Button("Button 6"));
}
}
Выход

Заключение
В этой статье обсуждались доступные макеты AWT. Обсуждение было сделано очень кратко. Следовательно, в ссылках есть некоторые ссылки, которые могут помочь вам узнать больше.