Чи можна використати більше 1 менеджера макетів уJava. Зараз я використовую gridLayout для реалізації шахової дошки, але під нею я хотів би помістити деякі інші речі, але не в gridLayout. Можливо, FlowLayout чи інший макет. Як я можу це зробити? Дякую!
Відповіді:
7 для відповіді № 1Чи можна використовувати більше 1 макета менеджер на Java.
Абсолютно. Насправді, використання декількох менеджерів версток - це норма.
Як я буду робити це?
Будь-який Container
підклас може мати a LayoutManager
і містять дочірні елементи. І кожен з цих дочірніх елементів може сам бути a Container
з дітьми. Найчастіше використовуваний контейнер під рамками верхнього рівня - JPanel
.
Для вашого прикладу ви, мабуть, повинні використовувати a BorderLayout
для рами поставте a JPanel
з сіткою в її центральному положенні (оскільки це та, яка отримує весь вільний вільний простір, коли іншим позиціям надаються бажані розміри), а інша JPanel
з "іншими речами" в ПІВДЕННІЙ позиції.
Більш детальну інформацію можна знайти в Свінг-підручник з менеджерів верст.
7 для відповіді № 2
Так, все, що вам потрібно, це спланувати розміщення всього інтерфейсу користувача (тобто; Вікно, головна панель тощо)
Наприклад, вам потрібно покласти щось під свою шахівницю, я зазвичай ходив би з 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);