Java, какой менеджер компоновки использовать для разделения окна на две области

ну, мне нужно несколько советов, какие менеджеры компоновки использовать для разделения фрейма на две области, скажем, в левой части фрейма будет вставлена ​​панель рисования, а в правой части фрейма я создам кнопки и другие вещи. контролировать это. Итак, какой менеджер компоновки мне следует использовать и как он должен выглядеть? Потому что в прошлый раз, когда мне нужно было что-то подобное, я попробовал использовать box layout, а затем borderlayout, но я думаю, что не знал, как правильно его использовать, потому что результат был не очень хорошим.

Кто-нибудь может помочь?


person Arturas M    schedule 18.09.2012    source источник


Ответы (2)


Я думаю, что JSplitPane — это то, что вам нужно.

Он делает именно то, что вы хотите: разделите кадр на 2 независимые области, в которых вы можете делать все, что хотите.

Поскольку это ваш единственный компонент, я думаю, что FlowLayout для родительского фрейма будет достаточно.

Подробнее см. здесь: http://docs.oracle.com/javase/tutorial/uiswing/components/splitpane.html

person Razvan    schedule 18.09.2012

Я бы пошел с BorderLayout. Поместите свой навигационный материал в orderLayout.EAST или BorderLayout.WEST (для левого и правого соответственно), похоже, вы хотите WEST. Затем либо укажите Border.CENTER для своего контента, либо не указывайте его.

JPanel parent = new JPanel();
parent.setLayout(new BorderLayout());
JPanel navigation = createNavigation();
JPanel content = createContent();

parent.add(navigation, BorderLayout.WEST);
parent.add(content, BorderLayout.CENTER);  // or parent.add(content);

У @Razvan есть хорошая мысль, особенно если вы хотите, чтобы этот разделитель для пользователя имел ручное управление шириной двух макетов. Компоновка границ подгонит боковую панель к минимальному размеру, необходимому компонентам, и поместит все дополнительное пространство в область CENTER.

Подробнее здесь: http://docs.oracle.com/javase/6/docs/api/java/awt/BorderLayout.html

person xbakesx    schedule 18.09.2012