![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| _Michael |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 23.6.2007 Где: з полонини Репутация: 1 Всего: 6 |
Здравствуйте, подскажите пожалуйста. У меня есть JPanel на которой устновлен GridLayout например 13 столбцов и 8 строк. Как мне сделать чтоб размер моей панели был такой чтоб все компонеты добавленные в нее были квадратными? И чтоб ето свойство сохранялось при изменении размера панели. Пробовал имплементировать ComponentListener с таким вот методом:
но ему все равно. -------------------- ...не убивайся ни о чем - все временно, хоть ночь темна но светлым днем беременна... Саади |
|||
|
||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 36 Всего: 46 |
хм, все работает. ты не забыл addComponentListener(this); ?
|
|||
|
||||
| _Michael |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 23.6.2007 Где: з полонини Репутация: 1 Всего: 6 |
нет не забыл. :(. Пробовал выводить в консоль размер до и после setSize(w, h); И в консоль оно так и выводит, что размер до и после setSize(w, h); не изменился. У меня ета панель добавляется на другую панель на которой установлен BorderLayout, в центр, и соответственно она и растагивается чтоб все место заполнить, т.е имеет приоритет перед етим моим setSize(w, h); я ето както так понимаю. Но можно ж както ето обойти ведь
Добавлено через 2 минуты и 54 секунды Стоп. или может мой setSize(w, h); сработал но после него сразу сработал еще один который после него вызывается где то каким то менеджером, наверное тем же Bordelayout'ом на той панели на которой расположена моя с GradLayout? Это сообщение отредактировал(а) _Michael - 14.9.2007, 11:14 -------------------- ...не убивайся ни о чем - все временно, хоть ночь темна но светлым днем беременна... Саади |
|||
|
||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 36 Всего: 46 |
я сделал панель с GridLayout. положил ее на ContentPane. листенер повесил на фрейм.
и работает! |
|||
|
||||
| _Michael |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 23.6.2007 Где: з полонини Репутация: 1 Всего: 6 |
addComponentListener(this); ето ж не на фрейм как я понимаю а на мою панель. Ну у меня так реализованно. А ты говришь что надо листенер вешать на весь фрейм и в нем изменять размер панели? шас спробую что получится
Добавлено через 4 минуты и 21 секунду Нет однако мене кажется что так не делается., чтоб в листенере фрейма изменять размер дочерних панелей, а если моя панель на трех других лежит. надо както инче имхо -------------------- ...не убивайся ни о чем - все временно, хоть ночь темна но светлым днем беременна... Саади |
|||
|
||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 36 Всего: 46 |
ну вот грубый набросок
Добавлено через 8 минут и 46 секунд а как иначе? будут же изменяться размеры фрейма, значит их и надо слушать |
|||
|
||||
| _Michael |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 23.6.2007 Где: з полонини Репутация: 1 Всего: 6 |
так можно слушать не рамер фрейма а размер только моей панели на которую листенер и повешать, или нет? И еще у меня тут вызрела идея, может ето свой LayoutManager наподобе с GridLayout но только с квадратными ячейками. Как понимаю можно наследовать от GridLayout и переопределить один-два метода? Это сообщение отредактировал(а) _Michael - 14.9.2007, 15:34 -------------------- ...не убивайся ни о чем - все временно, хоть ночь темна но светлым днем беременна... Саади |
|||
|
||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 36 Всего: 46 |
||||
|
||||
| _Michael |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 23.6.2007 Где: з полонини Репутация: 1 Всего: 6 |
Одним словом написать свой LayoutManager не такая сложная задача как я думал поначале. Вот плод моих творений SquareGridLayout :
Если че неясно по коду спрашывайте P.S. тема решена. dorogoyIV, спасибо за порявленный интерес и старания Упс, извиняюсь там одна ошибка думаю скоро исправлю Это сообщение отредактировал(а) _Michael - 15.9.2007, 23:08 -------------------- ...не убивайся ни о чем - все временно, хоть ночь темна но светлым днем беременна... Саади |
|||
|
||||
| _Michael |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 23.6.2007 Где: з полонини Репутация: 1 Всего: 6 |
Все, исправил. Идеально не получилось поскольку ето связано с ошыбкой округлений, так как полтора пикселя например не можна отмерять или нарисовать.
-------------------- ...не убивайся ни о чем - все временно, хоть ночь темна но светлым днем беременна... Саади |
|||
|
||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 36 Всего: 46 |
тогда делай четное число, например так:
ой, не то написал класс BigDecimal может округлить число например до ближайшего целого Это сообщение отредактировал(а) dorogoyIV - 16.9.2007, 10:44 |
|||
|
||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 36 Всего: 46 |
я взял из javadoc GridLayout и заменил одну строку в методе layoutContainer(Container parent)
|
|||
|
||||
| _Michael |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 23.6.2007 Где: з полонини Репутация: 1 Всего: 6 |
dorogoyIV, я тоже свой SquareGridLayout сделал из java'всого GridLayout, сначала сделал так как у тебя, но так немного некрасиво , поскольку нету выравнивания по центру
Но вот сейчас немного протестировал и немного оно все равно не по центру. Например если установить 12 на 17 клеток ну или другой достаточно крупный размер то видно как компоненты размещены не по центру а немного левее на пару пикселов, так что на глаз заметно что не по центру. Ну ето наверное я уже придираюсь -------------------- ...не убивайся ни о чем - все временно, хоть ночь темна но светлым днем беременна... Саади |
|||
|
||||
| _Michael |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 23.6.2007 Где: з полонини Репутация: 1 Всего: 6 |
Только что опять наткнулся на новую проблему, я забыл учитывать в своем SquareGridLayout'е hgap и vgap. Но теперь уже исправил. Привожу здесь уже наверное окончательный вариант
Добавлено через 1 минуту и 5 секунд Работает отлично. Проверено мной -------------------- ...не убивайся ни о чем - все временно, хоть ночь темна но светлым днем беременна... Саади |
|||
|
||||
![]()
|
| Правила форума "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. |