Добавление Borderlayout GUI к границам - PullRequest
3 голосов
/ 11 ноября 2011

Я пытаюсь добавить 3 панели к макету границы только Север, Юг и Запад

что-то вроде

[A]

     ___  ______________
    |   ||    P2        |
    |   ||______________|
    |P1 | ______________
    |   ||    P3        |
    |___||______________|

Я пытаюсь сделать что-то вроде

JFrame window = new JFrame();
window.setLayout(new BorderLayout());
window.add(P1, BorderLayout.WEST);
window.add(P2, BorderLayout.NORTH);
window.add(P3, BorderLayout.SOUTH);

Это заканчивается как

[B]
         ______________
        |    P2        |
        |______________|
         ___
        |P1 |
        |___|
         ______________
        |    P3        |
        |______________|

Нужно ли мне добавить пробел в качестве Центра, чтобы избежать проблемы?Я попытался просто поместить P2 и P3 в другую Большую панель и добавить: P1 - Запад и Большая Панель - Центр. Есть ли другой способ обойти это?Или я должен просто попробовать другой макет.

Ответы [ 3 ]

3 голосов
/ 11 ноября 2011

Так работает BorderLayout; компоненты NORTH и SOUTH располагаются горизонтально над и под компонентами WEST, CENTER и EAST.

Ваша система с двумя BorderLayout с прекрасно работает. Вы можете достичь того же с помощью GridBagLayout или MigLayout, но я гарантирую, что это займет гораздо больше времени. Использование промежуточных панелей - верный способ сделать что-либо.

0 голосов
/ 11 ноября 2011

Попробуйте MigLayout вместо BorderLayout.Код будет выглядеть так:

setLayout(new MigLayout("wrap 2, fill"));
add(P1, "span 1 2, grow");
add(P2, "grow");
add(P3, "grow");

http://www.miglayout.com

0 голосов
/ 11 ноября 2011

Окно JFrame = новый JFrame ();window.setLayout (new BorderLayout ());window.add (P1, BorderLayout.SOUTH);window.add (P4, BorderLayout.WEST);

P4.setLayout (new BorderLayout ());P4.add (P2, BorderLayout.NORTH);P4.add (P3, BorderLayout.SOUTH);

...