WebClub - Всероссийский Клуб Веб-разработчиков
WebClub.RU » Архив » Использование GridLayout

Использование GridLayout


Дата публикации: 17-03-2013

Достаточно часто GUI используется для отображения компонентов в форме сетки. Вообще, сетка имеет строки ячеек, причем каждая ячейка имеет одинаковый размер. Для обеспечения этого требования Java предоставляет диспетчер GridLayout.

Так, GridLayout делит доступную область контейнера на сетку, состоящую из строк и столбцов. Размер (ширина и высота) каждой ячейки в этой сетке - одинаковые. Число строк и столбцов может быть определенным. Однако, используется только один размер. Если число строк определено, GridLayout, исходя из этого, вычисляет число столбцов. Иначе, он проверяет, было ли определено число столбцов. Если да, то он использует его для вычисления числа строк. Значение 0 для строк означает любое число строк. Точно так же значение 0 для столбцов означает любое число столбцов. Лучше всего установить любое число строк и столбцов (то есть значение 0), но в то же время, выполнение этого может привести к IllegalArgumentException.

GridLayout рассматривает определенные размеры всех компонентов, управляемых контейнером и находит максимальную ширину и высоту. Затем он устанавливает ширину и высоту каждого компонента согласно максимальной ширине и высоте.

Следующее приложение использует GridLayout для создания кнопок одинакового размера в диалоговом окне подтверждения.

import java.awt.*;
import java.awt.event.*;

/** Class to show a confirmation dialog. */
public class ConfirmDialog extends Dialog implements ActionListener {

/** The label for the "Yes" button. */
public final static String YES_LABEL = "Yes";
/** The label for the "No" button. */
public final static String NO_LABEL = "No";

/** The message. */
private String msg;

/** Initializes the dialog. */
public ConfirmDialog(Frame parent, String msg) {

// The "true" parameter indicates that the dialog box is modal
super(parent, "Confirm", true);

// Update the message
this.msg = msg;

// Initialize the UI
init();

// Pack and show
pack();
setVisible(true);

}

/** Initialize the UI. */
protected void init() {

// Set layout
setLayout(new BorderLayout());

// Create a label for the message
Label msgLbl = new Label(msg);

// The yes, no buttons
Button yesButn = new Button(YES_LABEL);
Button noButn = new Button(NO_LABEL);

// Add the buttons to a panel with gridlayout so that
// they have the same size
Panel butnPanel = new Panel(new GridLayout(1, 0));
butnPanel.add(yesButn);
butnPanel.add(noButn);

// Add listener for the button clicks
yesButn.addActionListener(this);
noButn.addActionListener(this);

// Add the components to the panel
add(msgLbl, BorderLayout.CENTER);
add(butnPanel, BorderLayout.SOUTH);

}

/** Handles the button clicks. */
public void actionPerformed(ActionEvent ae) {
Button butn = (Button)ae.getSource();
System.out.println("Button: " + ae.getActionCommand());
// Close the dialog box
dispose();
setVisible(false);
}

/** Main. */
public static void main(String[] args) {

ConfirmDialog cd =
new ConfirmDialog(new Frame("GridLayout Demo"),
"Do you see a dialog box?");

// Exit demo
System.exit(0);
}

}
Метод main() создает образец класса ConfirmDialog с невидимым родителем и необходимым сообщением. Конструктор вызывает метод init(), который устанавливает GUI для диалога. Он устанавливает размещение диалога в BorderLayout и в центр добавляет сообщение. Также он создает панель для кнопок Yes/no и устанавливает их размещение в GridLayout. Так как кнопки должны быть только в одной строке, мы записываем 1 в параметр числа строк. Для обработки нажатий используется ActionListener, который добавляется для каждой кнопки. Наконец, диалог упаковывается и показывается.
GridLayout также позволяет вам определять горизонтальные и вертикальные промежутки, которые управляют интервалом между компонентами и интервалом между гранями и компонентами. В вышеупомянутом примере мы использовали его для создания равных размеров обоих кнопок. Это как раз то особенное свойство GridLayout, которое делает его популярным. В следующий раз, когда вам будут нужны компоненты одинакового размера, которые нужно расположить в сетке, используйте GridLayout.
Домен продается

Популярное

Не так давно в сети появился новый сервис, под названием Dead Man Zero. Этот сервис сделал...
Рынок социальных площадок уже давно стал стабильным. Несмотря на то, что время от времени...
Artisteer 4 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Апрель 2024 (1)
Октябрь 2018 (14)
Февраль 2017 (3)
Январь 2017 (1)
Август 2016 (1)
Май 2016 (2)

Карта сайта: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41

Друзья сайта



Случайная цитата

оберт Кийосаки:

"Если хочешь разбогатеть, ты должен научиться рисковать. Учись быть инвесторо."

Опрос

Какой текстовый редактор Вы используете?

OpenOffice
AbiWord
Notepad++
UltraEdit
PSPad
Microsoft Office
Microsoft Блокнот
Другой...