Spec-Zone .ru
спецификации, руководства, описания, API
|
Прежде, чем Вы начнете создавать пользовательского менеджера по расположению, удостоверьтесь, что никакой существующий менеджер по расположению не удовлетворяет Ваши требования. В частности менеджеры по расположению такой как GridBagLayout
, SpringLayout
, и BoxLayout
достаточно гибки, чтобы работать во многих случаях. Можно также найти менеджеров по расположению из других источников, такой как из Интернета. Наконец, можно упростить расположение, группируя компоненты в контейнеры, такие как панели.
GroupLayout
менеджер по расположению объединился с инструментом разработчика, чтобы разметить Ваш GUI. Один такой инструмент разработчика является IDE NetBeans. Иначе, если Вы хотите кодировать вручную и не хотите использовать GroupLayout
, тогда GridBagLayout
рекомендуется как следующий самый гибкий и мощный менеджер по расположению. Если Вы интересуетесь использованием JavaFX, чтобы создать Ваш GUI, см. Работу С Разметками в JavaFX.
Чтобы создать пользовательского менеджера по расположению, следует создать class, который реализует LayoutManager
LayoutManager2
Каждый менеджер по расположению должен реализовать, по крайней мере, следующие пять методов, которые требуются LayoutManager
интерфейс:
void addLayoutComponent(String, Component)
Container
class add
методы. Менеджеры по расположению, которые не связывают строки с их компонентами обычно, ничего не делают в этом методе.void removeLayoutComponent(Component)
Container
методы remove
и removeAll
. Менеджеры по расположению переопределяют этот метод, чтобы очистить внутреннее состояние, которое они, возможно, связали с Component
.Dimension preferredLayoutSize(Container)
Container
class getPreferredSize
метод, который самостоятельно вызывают под множеством обстоятельств. Этот метод должен вычислить и возвратить идеальный размер контейнера, предполагая, что компоненты, которые это содержит, будут в или выше их привилегированных размеров. Этот метод должен принять во внимание внутренние границы контейнера, которые возвращаются getInsets
Dimension minimumLayoutSize(Container)
Container
getMinimumSize
метод, который самостоятельно вызывают под множеством обстоятельств. Этот метод должен вычислить и возвратить минимальный размер контейнера, предполагая, что компоненты, которые это содержит, будут в или выше их минимальных размеров. Этот метод должен принять во внимание внутренние границы контейнера, которые возвращаются getInsets
метод.void layoutContainer(Container)
layoutContainer
метод фактически не тянет компоненты. Это просто вызывает один или больше каждого компонента setSize
, setLocation
, и setBounds
методы, чтобы установить размер компонента и позицию. Этот метод должен принять во внимание внутренние границы контейнера, которые возвращаются getInsets
метод. Если приспособлено, это должно также взять ориентацию контейнера (возвращенный getComponentOrientation
preferredLayoutSize
или minimumLayoutSize
методы вызовут прежде layoutContainer
вызывается.
Помимо реализации предшествования пяти методам, менеджеры по расположению обычно реализуют по крайней мере одного общедоступного конструктора и toString
метод.
Если Вы хотите поддерживать компонентные ограничения, максимальные размеры, или выравнивание, то Ваш менеджер по расположению должен реализовать LayoutManager2
интерфейс. Фактически, по этим причинам среди многих других, почти все современные менеджеры по расположению должны будут реализовать LayoutManager2
. Тот интерфейс добавляет пять методов к требуемым LayoutManager
:
addLayoutComponent(Component, Object)
getLayoutAlignmentX(Container)
getLayoutAlignmentY(Container)
invalidateLayout(Container)
maximumLayoutSize(Container)
Из этих методов самые важные addLayoutComponent(Component, Object)
и invalidateLayout(Container)
. addLayoutComponent
метод используется, чтобы добавить компоненты к расположению, используя указанный ограничительный объект. invalidateLayout
метод используется, чтобы лишить законной силы расположение, так, чтобы, если менеджер по расположению кэшировал информацию, это было отброшено. Для получения дополнительной информации о LayoutManager2
, см. LayoutManager2
Наконец, всякий раз, когда Вы создаете пользовательских менеджеров по расположению, следует быть осторожными в хранении ссылок на Component
экземпляры, которые больше не являются дочерними элементами Container
. А именно, менеджеры по расположению должны переопределить removeLayoutComponent
очистить любое кэшируемое состояние, связанное с Component
.
Пример CustomLayoutDemo
использует пользовательского вызванного менеджера по расположению DiagonalLayout
. Можно найти исходный код менеджера по расположению в DiagonalLayout.java
. DialogLayout
размечает компоненты по диагонали, слева направо, с одним компонентом на строку. Вот изображение использования CustomLayoutDemo DialogLayout
размечать пять кнопок.
Нажмите кнопку Launch, чтобы работать CustomLayoutDemo
Сеть Java™ использования