Spec-Zone .ru
спецификации, руководства, описания, API
След: Создание GUI С JFC/Swing
Урок: Разметка Компонентов В пределах Контейнера
Обхождение без менеджера по Расположению (Абсолютное Расположение)
Домашняя страница > Создание GUI С JFC/Swing > Разметка Компонентов В пределах Контейнера

Обхождение без менеджера по Расположению (Абсолютное Расположение)

Хотя возможно обойтись без менеджера по расположению, следует использовать менеджера по расположению если вообще возможно. Менеджер по расположению облегчает корректировать к стили зависимые компонентные появления, к различным размерам шрифта, к размеру изменения контейнера, и к различным локалям. Менеджеры по расположению также могут быть снова использованы легко другими контейнерами, так же как другими программами.


Отметьте: Эти покрытия урока, пишущий расположение кодируют вручную, который может быть стимулирующим. Если Вы не интересуетесь изучением всех деталей управления расположением, Вы могли бы предпочесть использовать GroupLayout менеджер по расположению объединился с инструментом разработчика, чтобы разметить Ваш GUI. Один такой инструмент разработчика является IDE NetBeans. Иначе, если Вы хотите кодировать вручную и не хотите использовать GroupLayout, тогда GridBagLayout рекомендуется как следующий самый гибкий и мощный менеджер по расположению.

Если Вы интересуетесь использованием JavaFX, чтобы создать Ваш GUI, см. Работу С Разметками в JavaFX.

Если контейнер содержит компоненты, на размер которых не влияет размер контейнера или шрифтом, стилем, или изменениями языка, то абсолютное расположение могло бы иметь смысл. Настольные области, которые содержат внутренние рамки, находятся в этой категории. Размер и позиция внутренних рамок не зависят непосредственно от настольного размера области. Программист определяет начальный размер и размещение внутренних рамок в пределах настольной области, и затем пользователь может переместить или изменить размеры фреймов. Менеджер по расположению является ненужным в этой ситуации.

Другая ситуация, в которой абсолютное расположение могло бы иметь смысл, является ситуацией пользовательского контейнера, который выполняет размер и вычисления позиции, которые определены к контейнеру, и возможно требуют знания специализированного состояния контейнера. Это - ситуация с разделенными областями.

Создание контейнера без менеджера по расположению включает следующие шаги.

  1. Установите менеджера по расположению контейнера в NULL, вызывая setLayout(null).
  2. Вызовите Component class setbounds метод для каждого из дочерних элементов контейнера.
  3. Вызовите Component class repaint метод.

Однако, создание контейнеров с абсолютно расположенными контейнерами может вызвать проблемы, если окно, содержащее контейнер, изменяется.

Вот снимок фрейма, область контента которого использует абсолютное расположение.

Снимок AbsoluteLayoutDemo

Нажмите кнопку Launch, чтобы работать, AbsoluteLayoutDemo, используя Сеть Java™ Запускаются (загрузите JDK 6 или позже). Альтернативно, чтобы скомпилировать и выполнить пример самостоятельно, консультируйтесь, пример индексируют.

Запускает пример AbsoluteLayoutDemo

Его код находится в AbsoluteLayoutDemo.java. Следующие шоу фрагмента кода, как компоненты в области контента создаются и размечаются.

pane.setLayout(null);

JButton b1 = new JButton("one");
JButton b2 = new JButton("two");
JButton b3 = new JButton("three");

pane.add(b1);
pane.add(b2);
pane.add(b3);

Insets insets = pane.getInsets();
Dimension size = b1.getPreferredSize();
b1.setBounds(25 + insets.left, 5 + insets.top,
             size.width, size.height);
size = b2.getPreferredSize();
b2.setBounds(55 + insets.left, 40 + insets.top,
             size.width, size.height);
size = b3.getPreferredSize();
b3.setBounds(150 + insets.left, 15 + insets.top,
             size.width + 50, size.height + 20);

...//In the main method:
Insets insets = frame.getInsets();
frame.setSize(300 + insets.left + insets.right,
              125 + insets.top + insets.bottom);


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Создание Пользовательского менеджера по Расположению
Следующая страница: Решение Общих проблем Расположения