Spec-Zone .ru
спецификации, руководства, описания, API
|
Хотя возможно обойтись без менеджера по расположению, следует использовать менеджера по расположению если вообще возможно. Менеджер по расположению облегчает корректировать к стили зависимые компонентные появления, к различным размерам шрифта, к размеру изменения контейнера, и к различным локалям. Менеджеры по расположению также могут быть снова использованы легко другими контейнерами, так же как другими программами.
GroupLayout
менеджер по расположению объединился с инструментом разработчика, чтобы разметить Ваш GUI. Один такой инструмент разработчика является IDE NetBeans. Иначе, если Вы хотите кодировать вручную и не хотите использовать GroupLayout
, тогда GridBagLayout
рекомендуется как следующий самый гибкий и мощный менеджер по расположению. Если Вы интересуетесь использованием JavaFX, чтобы создать Ваш GUI, см. Работу С Разметками в JavaFX.
Если контейнер содержит компоненты, на размер которых не влияет размер контейнера или шрифтом, стилем, или изменениями языка, то абсолютное расположение могло бы иметь смысл. Настольные области, которые содержат
Другая ситуация, в которой абсолютное расположение могло бы иметь смысл, является ситуацией пользовательского контейнера, который выполняет размер и вычисления позиции, которые определены к контейнеру, и возможно требуют знания специализированного состояния контейнера. Это - ситуация с разделенными областями.
Создание контейнера без менеджера по расположению включает следующие шаги.
setLayout(null)
.Component
class setbounds
метод для каждого из дочерних элементов контейнера.Component
class repaint
метод.Однако, создание контейнеров с абсолютно расположенными контейнерами может вызвать проблемы, если окно, содержащее контейнер, изменяется.
Вот снимок фрейма, область контента которого использует абсолютное расположение.
Нажмите кнопку Launch, чтобы работать, AbsoluteLayoutDemo, используя Сеть Java™ Запускаются (
Его код находится в 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);