Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Окна 
:(
    Опции темы
XClan
Дата 14.7.2005, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 14.10.2003
Где: Планета Сириус

Репутация: нет
Всего: 3



При запуске нескольких программ написанные на java запускаются акурат всегда на верхнем левом углу.. Меня интересует как сделать так чтобы при запуске второй программы , она была бы за пределом запущенного окна..
Например как в UNIX запускаешь xterm оно если открыть, то открывается не в том же месте, где уже запущена, а рядом.. То есть вижу теперь два окна..
Как исправить??? А то жутко не удобно работать.. Так как запуская новые просто закрываешь от глаз предыдущую..


--------------------
rm -rf /bin/laden
PM MAIL WWW   Вверх
LSD
Дата 14.7.2005, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 38
Всего: 538



Frame.setLocation(int,int) не подходит?


--------------------
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.
PM MAIL WWW   Вверх
XClan
Дата 14.7.2005, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 14.10.2003
Где: Планета Сириус

Репутация: нет
Всего: 3



Это если уже знаешь, что запущена, а если не знаешь??


--------------------
rm -rf /bin/laden
PM MAIL WWW   Вверх
XClan
Дата 14.7.2005, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 14.10.2003
Где: Планета Сириус

Репутация: нет
Всего: 3



Для представления ..
Если в виндах запускаешь несколько блокнотов , то они не накладываются каждый раз на себя, а запускаются рядом... видно сразу несколько, точно также и в UNIX с xterm...
А в моем случае если запустить 3-4-6 программ , которые написал, она клеются всегда на друг друга и всегда вновь запущенные программы закрывают предыдущие запущенные и я их не вижу..
А метод smile
Код

Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(((int)d.getWidth() - 260) / 2, ((int)d.getHeight() - 130) / 2, 260, 130);

Где 260 и 130 размеры окна.. не очень удобен, он всегда будет в середине и вновь запущенные программы его просто закроют.. Что не удобно..
А так запустилась первая ( пусть первая будет в левом углу) , то вновь запущенная та же программа могла бы запустить себя и отображаться чуть ниже ранее запущенной, чтобы я видел что их 2 или 10..
Вот эб этом и речь, не вижу способ лечения.. smile

Это сообщение отредактировал(а) XClan - 14.7.2005, 10:35


--------------------
rm -rf /bin/laden
PM MAIL WWW   Вверх
DEER
Дата 14.7.2005, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 749
Регистрация: 12.4.2005
Где: г. Рязань

Репутация: нет
Всего: 13



геморойны способ:
А что если каждый раз раз при открытии окна приложения записовать его координаты куда нить (например в файл),
если в файле 0.0 то открываем с координатами 10,10, и записываем в него новые координаты.
далее всё будет повторяться


--------------------
 
PM MAIL WWW ICQ MSN   Вверх
Metal_Heart
Дата 14.7.2005, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а почему бы и нет?
**


Профиль
Группа: Участник
Сообщений: 728
Регистрация: 31.3.2005
Где: Москва

Репутация: 1
Всего: 12



также придется хранить историю открытия и закрытия, иначе есть вероятность, что следующие окна окажутся за экраном

либо ограничить максимально нижнее положение

Это сообщение отредактировал(а) Metal_Heart - 14.7.2005, 11:05


--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
DEER
Дата 14.7.2005, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 749
Регистрация: 12.4.2005
Где: г. Рязань

Репутация: нет
Всего: 13



ну да, а если достиг максимума можно начинать сверху, с большим(ударение на "о") смещением вправо


--------------------
 
PM MAIL WWW ICQ MSN   Вверх
batigoal
Дата 14.7.2005, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 7
Всего: 151



Если они все запускются из-под одной JVM, то можно сделать статик поле. Ну а если нет - тогда, наверное, только через взаимодействие с осью (файлы, реестр, etc)


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
XClan
Дата 14.7.2005, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 14.10.2003
Где: Планета Сириус

Репутация: нет
Всего: 3



Можно спросить, а как с помощью статик поле делать???


--------------------
rm -rf /bin/laden
PM MAIL WWW   Вверх
batigoal
Дата 14.7.2005, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 7
Всего: 151



Я имею в виду примерно следующее:

Есть у тебя класс окна, в котором ты выполняешь этот свой код:
Код

class MyFrame extends Frame
{
  public static void main(String[] args)
  {
.............
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    setBounds(((int)d.getWidth() - 260) / 2, ((int)d.getHeight() - 130) / 2, 260, 130);
............
  }
}


Преобразуем его в такой:
Код

class MyFrame extends Frame
{
  private static int x_offset = 0;
  private static int y_offset = 0;

  public static void main(String[] args)
  {
.............
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    setBounds(((int)d.getWidth() - 260) / 2 + x_offset, ((int)d.getHeight() - 130) / 2 +  + y_offset, 260, 130);
    x_offset +=20;
    y_offset +=20;
............
  }
}


C каждым открытым окном x_offset и y_offset будут увеличиваться на 20, а твое окно - сдвигаться. Надо только проконтролировать ситуацию, когда окно дойдет до края экрана.

Это сообщение отредактировал(а) Lamer George - 14.7.2005, 12:40


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
igon
Дата 14.7.2005, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 30.10.2004

Репутация: 7
Всего: 21



1. Math.random()
Код

int x = 10*(int)(Math.random()*d.getWidth()/10);
int y = 10*(int)(Math.random()*d.getHeight()/10);
setBounds(x,y, 260, 130);

2. Вариант DEER, но с использованием Properties: гемор чуть меньше

Вариант со static, ИМХО, вне конкуренции smile



--------------------
Хотите поговорить об этом?
PM   Вверх
DEER
Дата 15.7.2005, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 749
Регистрация: 12.4.2005
Где: г. Рязань

Репутация: нет
Всего: 13



А ещё надо подумать про закрытие окна, ведь счётчики надо уменьшать....
Надо как то узнавать что окно самое "молодое", и если это так то уменьшать счетчики


--------------------
 
PM MAIL WWW ICQ MSN   Вверх
batigoal
Дата 15.7.2005, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 7
Всего: 151



Цитата(DEER @ 15.7.2005, 10:05)
А ещё надо подумать про закрытие окна, ведь счётчики надо уменьшать....

А зачем? Пускай бы так себе и открывались со смещением вниз и вправо. Но, конечно, тут как хочется - так и делай.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
chief39
Дата 15.7.2005, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: нет
Всего: 77



Цитата(DEER @ 15.7.2005, 09:05)
А ещё надо подумать про закрытие окна, ведь счётчики надо уменьшать....
Надо как то узнавать что окно самое "молодое", и если это так то уменьшать счетчики


Если уж так всё серьёзно - тогда сделай статиком какой-нить Arraylist где все окна будут регистрироваться. Но тогда поимеешь проблем с расчётом какое из них закрылось.... ты хочешь впихивать новое в пробел который образовался, при закрытии не последнего и не первого окна?
Или открывать в левом верхнем если все предыдущие закрыл? - тогда проверяй эррейлист на наличие там окон. И не забывай их там разрегистрировать по закрытию
Кажется это лишнее.....

Сделай со статиком оффсетом - доходит до края экрана(сам подсчитай) - начинает заново... Тысячи окон ты корректно не разместишь... да и не надо, мне кажется.

P.S. Блокнот тоже, кажется, доходит до предела и начинает заново...
Правда у меня он сейчас открывается тютелька в тютельку над другим... smile
Хотя.... это из-за Астона скорее всего.




--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
LSD
Дата 15.7.2005, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 38
Всего: 538



Если используешь JDK 1.5, то воспользуйся frame.setLocationByPlatform(true). Оно делает именно то что ты хочешь:
Цитата
Sets whether this Window should appear at the default location for the native windowing system or at the current location (returned by getLocation) the next time the Window is made visible. This behavior resembles a native window shown without programmatically setting its location. Most windowing systems cascade windows if their locations are not explicitly set. The actual location is determined once the window is shown on the screen.

This behavior can also be enabled by setting the System Property "java.awt.Window.locationByPlatform" to "true", though calls to this method take precedence.



--------------------
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.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0584 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.