Есть ли способ использовать более одного менеджера макетов в Java. Прямо сейчас я использую gridLayout для реализации шахматной доски, но под ней я хотел бы добавить некоторые другие вещи, но не в gridLayout. Возможно, FlowLayout или какой-то другой макет. Как мне это сделать? Спасибо!Несколько менеджеров макетов в Java
ответ
Есть ли способ использовать более 1 макета менеджер на Java.
Абсолютно. Фактически, использование нескольких менеджеров макетов является нормой.
Как бы я это сделал?
Подкласс Container
может содержать LayoutManager
и содержать дочерние элементы. И каждый из этих дочерних элементов сам может быть Container
с детьми. Наиболее часто используемый контейнер ниже кадров верхнего уровня - JPanel
.
Для примера, вы, вероятно, следует использовать BorderLayout
для рамы, положить JPanel
с сеткой в центральном положении (потому что это тот, который получает все доступное остающееся пространство, когда другие позиции были даны свои предпочтительные размеры) и еще JPanel
с «другим материалом» в позиции SOUTH.
Подробнее можно найти на странице Swing tutorial on layout managers.
Да, все, что вам нужно планировать ваш над всеми UI Layout (т.е., окна, мастер панели и т.д.)
Например, вам нужно положить что-то под шахматной доской, я обычно идти с BorderLayout в базовый уровень.
Так что предположим, что у меня есть JPanel под названием masterPanel, который содержит все компоненты для моего шахматного приложения. Таким образом, код будет выглядеть так:
JPanel masterPanel = new JPanel(new BorderLayout());
JPanel chessBoardPanel = createChessboardPanel(); //assuming this method will return a
//JPanel with chess board using GridLayout
JPanel infoPanel = new JPanel(); //this is the panel that would contain info elements, that //may go below my chess board.
//Now add everything to master panel.
masterPanel.add(chessBoardPanel, BorderLayout.CENTER);
masterPanel.add(infoPanel, BorderLayout.PAGE_END);
//add masterPanel to your window (if required)
this.getContentPane().add(masterPanel);