Я использую следующее:
java.awt.Container.add(Component comp, Object constraints)
Как делают меня specificy ограничительный объект? Я должен смочь поместить компонент в контейнере.
О, и мой класс расширяется JInternalFrame
если это помогает...
Я должен указать координаты для размещения компонента в контейнере
Объекты ограничений
зависят от того, какой менеджер компоновки вы используете.
Например, с 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
Правильный объект ограничений зависит от текущего LayoutManager
.
Если вы используете, например, BorderLayout
, объектом ограничений может быть, например, BorderLayout.SOUTH
.
Это зависит от используемого вами менеджера компоновки. Например, если вы используете BorderLayout
, тогда вы можете использовать такие значения, как BorderLayout.CENTER
и BorderLayout.NORTH
. Если вы не используете диспетчер компоновки, вам необходимо установить положение компонентов вручную.
Посмотрите руководства для LayoutManager ! Примеры покажут вам, какие ограничения используются с какими макетами и как.
Из java.awt.Container
class'es javadoc :
Ограничения определяются конкретным используемым менеджером компоновки. Например, класс BorderLayout определяет пять ограничений: BorderLayout.NORTH, BorderLayout.SOUTH, BorderLayout.EAST, BorderLayout.WEST и BorderLayout.CENTER.
Классу GridBagLayout требуется объект GridBagConstraints. Неспособность передать объект ограничений правильного типа приводит к исключению IllegalArgumentException.
Этот комментарий можно найти в защищенном методе addImpl
.