2012-12-02 3 views
0

Привет, пожалуйста, см. Прикрепленное изображение, я кодирующий интерфейс, который имеет три JPanels, и я использую GridBagLayout, я прочитал несколько хороших учебников и получил некоторое понимание, а также, но мне нужно ваше руководство относительно размещения 2 JPanels бок о бок, как в приведенном рисунке.Больше, чем 1 JPanel в GridBagLayout

, например, если я делать frame.add(leftpanel); и тогда есть только одна панель на JFrame .. как выровнять его влево на половину JFrame, так что, когда я делать frame.add(panelright); он добавляется к правой ИДС,

пожалуйста наставит меня сделать функциональность, показанную на рис, enter image description here

я могу справиться с 1 JPanel и все компоненты, но не знаю, примыкают обрабатывать более чем 1,

+0

* «Выровнять его на половине JFrame» * *** Точно *** половина? Если это так, для левой/правой панели потребуется «GridLayout». Затем вы можете поместить эту панель в «CENTER» из «BorderLayout», а нижний - в «PAGE_END». –

ответ

3

Я думаю, в вашем случае BorderLayout будет более полезным. Попробуйте прочитать об этом here.

Вы можете добавить свои панели с севера на юго-восток на запад или по центру в этом случае будет намного лучше, чем GridBag.

+0

, и в случае, если я должен добавить 5-6 компонентов в каждую JPanel, что не так просто для меня добавить, а в GridBagLayout это довольно просто, пожалуйста, помогите мне добавить 2 JPandles или предоставить мне любой ресурс, поскольку я был неспособен найти его (для двух JPanels) –

+0

да, вы можете сделать это, добавив еще один borderlayout в центре или другом макете. – Fyre

2

Необходимо указать позицию и другие параметры, используя GridBagConstraints. Например, вы могли бы сделать что-то вроде этого:

GridBagConstraints constraints = new GridBagConstraints(); 
constraints.gridx = 0; 
constraints.gridy = 0; 
constraints.fill = GridBagConstraints.BOTH; 

frame.add(leftPanel, constraints); 
constraints.gridx = 1; 
frame.add(panelright, constraints); 

constraints.gridx = 0; 
constraints.gridy = 1; 
constraints.gridwidth = 2; 
frame.add(bottomPanel, constraints); 

GridBagConstraints.gridx и GridBagConstraints.gridy определить строку и столбец для этого элемента. fill указывает макету использовать все доступное пространство как по горизонтали, так и по вертикали. Если вы хотите установить, что одна ячейка будет использовать пространство с определенной долей относительно других ячеек, вы можете использовать весовые и весовые поля.

+0

frame.add (leftPanel, ограничения); он генерирует ошибку panel1.add (buttton1, ограничения); этот работает, но так же –

+0

Я исправил некоторые ошибки в коде .. Какую ошибку он генерирует? Предположим, вы установили контентную панель JFrame в JPanel с GridBagLayout, верно? –

2

Также рассмотрите два случая JSplitPane. Самая внешняя панель должна иметь VERTICAL_SPLIT между верхней и нижней частями. Верхняя часть внешней панели будет содержать еще один JSplitPane, имеющий HORIZONTAL_SPLIT между левым и правым.

Смежные вопросы