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. Обсуждение было сделано очень кратко. Следовательно, в ссылках есть некоторые ссылки, которые могут помочь вам узнать больше.