![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| axod |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 17.2.2005 Репутация: нет Всего: нет |
Вот пример самой простенькой проги:
Здесь MyPanel расширяет класс JPanel и в конструкторе главного класса фрейма создаётся объект на него и помещается в другой JPanel. Проблема в том что MyPanel создаётся в виде маленького квадратика, а мне нужно чтоб он был на весь фрейм, внутри другого JPanel. Если заменить код между комментариями на:
То я получу желаемый результат, НО мне надо так как описано выше. Жду ответа пожалуйСто. Это сообщение отредактировал(а) axod - 17.2.2005, 20:52 |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
Объясни зачем для единственного компонента тебе нужно помещать его наверх другой панели? И вообще зачем две вложенных панели если нет других компонентов? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 13 Всего: 172 |
-------------------- |
|||
|
||||
| axod |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 17.2.2005 Репутация: нет Всего: нет |
М-да спасибо.
Я же написал что ЭТО простейшая прога что можно выдумать. Ещё маленький вопросик у меня вообще MyPanel используется для прорисовочки и очень умных взаимосвязей с другими классами написав
Я не получу батву, ведь к примеру на фрейме у меня пусть должен быть JPanel c кнопками, JPanel с ещё кнопками и myPanel - ом и ещё другие JPanel. А myPanel просто используется как область прорисовки. Спасибо за ответ. |
||||
|
|||||
| Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 13 Всего: 172 |
В смысле, неурожай нa свеклу чтоль?
Попробуй ради интереса без "области прорисовки". С разными лейаут менеджерами. -------------------- |
||||
|
|||||
| axod |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 17.2.2005 Репутация: нет Всего: нет |
Да я просто имел ввиду что JPanel где я реализую свой paint() буду также использовать как вместилеще других объектов без всяческих нежелательных последствиях. Батва - продукт работы(деятельности) человека, который не желательно использовать в пищу. Батва - те процессы, которые не желательно наблюдать или просто иметь в данном коде. |
|||
|
||||
| Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 13 Всего: 172 |
Проще сделать отдельную панель для рисования. Добавлено @ 22:01 Между прочим contentPane - тоже панель, поэтому еще проще dобавить в MainC метод
-------------------- |
||||
|
|||||
| axod |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 17.2.2005 Репутация: нет Всего: нет |
Да я и делал вообще отдельную панель для рисования просто унаследованая от JPanel и
в которой я реализую метод paintComponent(Graphics2D g2D){...} просто когда я засовывал эту панель в другую у меня был маленький белый квадратик. Ну вообще на вопрос мой ответил, спасибо. |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 13 Всего: 172 |
Я имел в виду ложить myPanel не на panel а на contentPane.
-------------------- |
|||
|
||||
| axod |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 17.2.2005 Репутация: нет Всего: нет |
Ладно попробую спасибо! Но мои вопросы ещё будут.
|
|||
|
||||
| djGri |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 21.2.2005 Репутация: 1 Всего: 3 |
2 axod
u JPanel - by default stoit FlowLayout - poetomu ti videl malenkuju knopku |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 13 Всего: 172 |
Он пользовал BorderLayout -
-------------------- |
|||
|
||||
| djGri |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 21.2.2005 Репутация: 1 Всего: 3 |
Неа! BorderLayout.NORTH - это Dimension Надо так:
Это сообщение отредактировал(а) djGri - 22.2.2005, 16:53 |
||||||
|
|||||||
| AntonSaburov |
|
||||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 10 Всего: 118 |
Что-то ты похоже путаешь - это String. И вообще использовать тогда надо так:
В добавлении сначала идет указание места, а потом только компонент. |
||||
|
|||||
| djGri |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 21.2.2005 Репутация: 1 Всего: 3 |
в jdk 4.2 - так не работает |
||||||
|
|||||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 10 Всего: 118 |
Этот код прекрасно собирается под 1.4.2
|
|||
|
||||
| djGri |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 21.2.2005 Репутация: 1 Всего: 3 |
AntonSaburov
В этом случае работает:
А в этом нет:
Это потому, что у JFrame - default layout = Border Layout Это сообщение отредактировал(а) djGri - 22.2.2005, 16:36 |
||||
|
|||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 10 Всего: 118 |
Я не понимаю, почему у тебя panel.add имеет параметры в странном порядке ?
А кроме того у панели по умолчанию другой layout. |
|||
|
||||
| djGri |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 21.2.2005 Репутация: 1 Всего: 3 |
Да - Flow
panel.add ( Container, int ) |
||||
|
|||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 13 Всего: 172 |
contentPane имеет дефаултом BorderLayout, потому contentPane.add(panel, BorderLayout.CENTER) добавит панель в центр. У JPanel дефаулт - FlowLayout, и дейсвительнo есть метод add(Component, int) который добавляет на позицию int. Поэтому panel.add(myPanel, BorderLayout.CENTER) добавит явно нe в центр.
Плохo, когда нет енумов, тогда б сразу выдалo ошибку. -------------------- |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 10 Всего: 118 |
BorderLayout.CENTER имеет тип String.
|
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 13 Всего: 172 |
Извиняусь, я имел в виду метод add(Component, Object).
-------------------- |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 10 Всего: 118 |
Посмотрел наконец первый пример - все там корректно. Просто установка размеров для MyPanel не дает эффекта. И не должно. JPanel возвращает самый маленький размер для FlowLayout. А он и будет минимальным, т.к. никаких элементов не находится на панели.
Там и получается ма-а-а-аленькая панелька в самом верху. Так что пример работает корректно. Что ты хочешь получить на самом деле ? |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 13 Всего: 172 |
Прикол в том, что в этом методе add в качствe констрейнта можно указывать все чтo угодно, если стоит FlowLayout . Например
-------------------- |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 10 Всего: 118 |
Так FlowLayout никаких условий не использует.
Вот прямо из описания: "Also notifies the layout manager to add the component to this container's layout using the specified constraints object." Т.е. этот объект используют только те лэйауты, которые в нем нуждаются. FlowLayout к ним не относиться. Попробуй пример, в котором просто изменен лэйаут у панели - все увидишь. Отругается, что фигню дали.
|
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 13 Всего: 172 |
Дык понятно, но сам факт наличия метода сбивает с толку. Для BorderLayout все сработае; в других случаях чловек начинает писать .add(myPanel, BorderLayout.NORTH); и думаеt чтo работает с BorderLayout.
-------------------- |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 10 Всего: 118 |
По уму наверно надо было бы действительно описать какой-нибудь интерфейс для констрэйнтов и тогда понятности было бы больше.
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |