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 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Март 2017 (1)
Февраль 2017 (3)
Январь 2017 (1)
Август 2016 (1)
Май 2016 (2)
Ноябрь 2015 (1)

Карта сайта: 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

Друзья сайта

Хотите продать свой сайт?
- Мы быстро и удобно для Вас сможем его купить:
  • Заявка на продажу сайта
  • Раcсматриваем цены на каждый сайт в индивидуальном порядке.

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

    Натан Ротшильд:

    "Кто владеет информацией – тот владеет миром."

    Опрос

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

    Winamp
    Light Alloy
    foobar2000
    Apollo
    AIMP
    1by1
    iTunes
    jetAudio
    Другой...