Вопрос об ограничениях контейнера Java - PullRequest
5 голосов
/ 26 апреля 2010

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

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

Как мне указать объект ограничений? Мне нужно иметь возможность разместить компонент внутри контейнера.

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

Мне нужно указать координаты, чтобы поместить компонент в контейнер

Ответы [ 5 ]

4 голосов
/ 26 апреля 2010

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

3 голосов
/ 26 апреля 2010

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

Например, с 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
1 голос
/ 26 апреля 2010

Из java.awt.Container класса Javadoc:

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

Для класса GridBagLayout требуется объект GridBagConstraints. Невозможность передать правильный тип объекта ограничений приводит к IllegalArgumentException.

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

0 голосов
/ 26 апреля 2010

Надлежащий объект ограничений зависит от текущего LayoutManager.

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

0 голосов
/ 26 апреля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...