Объекты 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
Спасибо. Это почти сработало. Если я использую setBounds для того, чтобы, например, размер кнопки, я могу получить «по умолчанию» высоту и ширину для кнопки (т.е. авторизованную до размера отображаемого текста), так что, когда я вызываю setBounds, у меня нет для указания высоты и ширины (только для позиции x, y)? – llm
Вы можете предварительно скопировать их один раз и использовать для каждой добавляемой кнопки, чтобы получить размер в соответствии с шрифтом, который вы должны использовать __component.getFontMetrics() __, тогда у вас появятся требуемые методы (например, __stringWitdh («foobar») __) для получения размеров .. – Jack
Я на самом деле закончил использование «componentName» .getMinimumSize(). width/height в случае, если кто-то столкнется с этим. – llm