Вопрос об ограничениях Контейнера Java

Я использую следующее:

java.awt.Container.add(Component comp, Object constraints)

Как делают меня specificy ограничительный объект? Я должен смочь поместить компонент в контейнере.

О, и мой класс расширяется JInternalFrame если это помогает...

Я должен указать координаты для размещения компонента в контейнере

5
задан llm 26 April 2010 в 17:30
поделиться

5 ответов

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

Например, с BorderLayout у вас будет только несколько констант: container.add (element, BorderLayout.CENTER)

В то время как, если диспетчер компоновки контейнера является GridBagLayout у вас будет объект GridBagConstraints с указанными параметрами.

Некоторым менеджерам компоновки (например, FlowLayout или GridLayout ) не нужно никаких ограничений, поскольку они фактически сами решают, как размещать объекты.

В качестве примечания: если вам нужно абсолютное позиционирование, у вас не будет диспетчера компоновки:

container.setLayout(null);
container.add(element1);

Insets insets = pane.getInsets();
element1.setBounds(..); //here you set absolute position
3
ответ дан 14 December 2019 в 04:33
поделиться

Правильный объект ограничений зависит от текущего LayoutManager .

Если вы используете, например, BorderLayout , объектом ограничений может быть, например, BorderLayout.SOUTH .

0
ответ дан 14 December 2019 в 04:33
поделиться

Это зависит от используемого вами менеджера компоновки. Например, если вы используете BorderLayout , тогда вы можете использовать такие значения, как BorderLayout.CENTER и BorderLayout.NORTH . Если вы не используете диспетчер компоновки, вам необходимо установить положение компонентов вручную.

0
ответ дан 14 December 2019 в 04:33
поделиться

Посмотрите руководства для LayoutManager ! Примеры покажут вам, какие ограничения используются с какими макетами и как.

4
ответ дан 14 December 2019 в 04:33
поделиться

Из java.awt.Container class'es javadoc :

Ограничения определяются конкретным используемым менеджером компоновки. Например, класс BorderLayout определяет пять ограничений: BorderLayout.NORTH, BorderLayout.SOUTH, BorderLayout.EAST, BorderLayout.WEST и BorderLayout.CENTER.

Классу GridBagLayout требуется объект GridBagConstraints. Неспособность передать объект ограничений правильного типа приводит к исключению IllegalArgumentException.

Этот комментарий можно найти в защищенном методе addImpl .

1
ответ дан 14 December 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: