Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: GUI и Java FX приложения > Основное отличие JFrame от JPanel как контейнера |
Автор: Royan 25.7.2008, 12:08 | ||
Правильно ли я понимаю, что основное отличие JFrame от JPanel как контейнера заключается в том что в JFrame можно добавить только один компонент Пример:
Если же я буду добавлять в панель но все OK будет две кнопки. Вопрос на самом деле такой - где об этом написано? |
Автор: fixxer 25.7.2008, 13:37 |
Красавец! Компоненты добавляешь в JFrame, а LayoutManager кладешь в JPanel. Замени panel.setLayout(gridbag); на this.setLayout(gridbag); и будет тебе счастье. |
Автор: dorogoyIV 25.7.2008, 14:02 | ||
вот еще для наглядности список контейнеров на пустом JFrame
|
Автор: AntonSaburov 25.7.2008, 14:22 |
Читайте доки иногда JFrame contains a JRootPane as its only child. The content pane provided by the root pane should, as a rule, contain all the non-menu components displayed by the JFrame. |
Автор: fixxer 25.7.2008, 14:58 | ||
AntonSaburov, ты это к чему? Начиная с Java 5, JFrame#add(Component) эквивалентно JFrame#getContententPane().add(Component)
|
Автор: Royan 25.7.2008, 15:32 | ||
В общем все ясно в доках действительно все сказано: The default content pane will have a BorderLayout manager set on it. из-за которого меня и проглючило: Фокус в действии
Комментируем строчку panel.setLayout(new BorderLayout()); все становится на "круги своя" обе кнопки видны |
Автор: dorogoyIV 25.7.2008, 15:50 | ||
![]() тогда читай про LayoutManager можно было написать например так: panel.add(new JButton("Print"), "South"); не убирая BorderLayout |
Автор: AntonSaburov 25.7.2008, 16:56 |
Или вот - http://antonsaburov.narod.ru/articles/LayoutManager.html |