![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Dancer |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: нет Всего: 37 |
Создал свой класс унаследованный от java.awt.Frame как мне получить размер канвы, на которую могу выводить свою графику. То есть, как мне полуить размер Title и толщину рамок у этого фрейм объекта.
Заранее благодарен. -------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! |
|||
|
||||
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: 1 Всего: 15 |
Насколько я знаю стандартного метода возвращающего клиентскую область окна во Frame'е нет. Быть может твою задачу можно решить иначе? С какой целю тебе необходимо это знать. Если только выводить графику, то тебе это не нужно. Перегрузив метод paint, ты сразу получаешь координаты левого верхнего угла клиентской области, вот код, который скажет тебе больше моих слов.
-------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| Dancer |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: нет Всего: 37 |
Нет, мне именно нужно знать размер области, так как в эту область нужно будет выводить текст, в зависимости от того какая ширина, будет выведенно определеённое количество символов. Использовать JTextPanel или что-то наподобие нельзя.
-------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! |
|||
|
||||
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: 1 Всего: 15 |
Дам хинт. Пихни во фрейм кнопку (в этот момент фрейм можно не показывать), сделай на нем pack. Получи размер кнопки (можно через frm.getComponent(0).getSize(), если ты уверен, что кнопка именно под 0 индексом), потом получи размер фрейма. Далее элементарная арифметика
Добавлено @ 18:20 Таким образом узнаешь размеры границ окна и заголовка, потом даже если размеры фрейма уменьшаться, можешь запросто пересчитать размеры клиентской области -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| Royan |
|
||||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: 1 Всего: 15 |
Удивительно, оказывается есть такой чудо метод у Container'а - getInsets(). В доке написано:
На практике:
Выводится: java.awt.Insets[top=0,left=0,bottom=0,right=0] Почему??? Это сообщение отредактировал(а) Royan - 23.5.2005, 19:00 -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
||||
|
|||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 13 Всего: 172 |
Может, нужно сначала показать, а потом брать insets?
-------------------- |
|||
|
||||
| Dancer |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: нет Всего: 37 |
c Insets уже пробывал, думал о нём с самого начала, но не до show() не после него, getInsets() выдаёт нули.
Нашёл одно стредство: методе paint() сделать g.getClipBounds() это даст нам в общем то правильные результаты НО!!!!!, это будет лишь работать, если окно не ресайзится или он не перекрыто другими окнами. Пример кода:
возможно это и поможет, но есть ещё одна проблема. Как мне получать что окно в данный момент ресайзится, тогда можно было бы не перерисовывать его пока не будет мышка отжата. Как только кнопка мыши будет Released тогда и только тогда перерисовывать. Если ставить листенеры (MouseMotionListener и MouseListenr), то они отрабатывают лишь когда мышь находится в пользовательской области, но не реагируют когда мышь находится в области бордюра или title. -------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! |
|||
|
||||
| skh |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 20.3.2005 Репутация: нет Всего: нет |
Уточни задачу пожалуйста.
|
|||
|
||||
| Dancer |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: нет Всего: 37 |
Задание следующее:
Программа должна показывать содержимое текстового файла в окне произвольного размера. Показываемый текст должен быть отформатирован по левому краю окна. Слова не помещающиеся на одной строке следует целиком переносить на следующую строку; слова не помещающиеся на одну строку вообще следует разделять так, чтобы на исходной строке осталось максимальное количество символов. Программа должна обрабатывать переводы строк. Текст должен показываться любым пропорциональным шрифтом. Каждая пара слов должна показываться фонтом, размер которго будет больше или меньше, чем размер фонта для предыдущей пары. например 9-12-9-12 Программа должна быть устроена так, чтобы при простой перерисовке окна текст не переформатировался. Под переформатированием понимается процесс разбиения текста на части, которым присваиваются определённые визульные характеристики. По нажатию клавиш Up и Down программа должна осуществлять построчный scroll. Словами в исходном тексте считаются символы, ограниченные пробелами и переводами строк. Программу следует организовать на языке Java без использования компоненты JTextPane, а так же других компонент библиотеки Swing и AWT, выполняющих форматирование. getInsets() у меня даёт правильные размеры только лишь при старте и более их не меняет в процессе ресайза окна. Код, который я приводил ранее показывает, что в общем то рзмеры бордюров и title меняются по сравнению с первоначальными, если мы развернём окно на весь экран. (Хотя может быть эту ситуацию стоит орбаботать как частную?) -------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! |
|||
|
||||
![]()
|
| Правила форума "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. |