Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > FullScreen в Java


Автор: simanyay 5.6.2004, 19:18
Привет. Почитав про FullScreen Exclusive Mode API я начал думать про альтернативный способ. Идея такая: Если вместо JFrame и использовать JWindow и прорисовывать края окна средствами Swing, то как раз получится. Так вот я добился всего кроме прорисовки краёв окна средствами Swing. Может кто поможет. Потом в Находки добавим smile.gif Это так... для энтузиазма smile.gif

Автор: LSD 5.6.2004, 20:22
Цитата(simanyay @ 5.6.2004, 19:18)
Так вот я добился всего кроме прорисовки краёв окна средствами Swing.

Вот код, только нужно установить нужный LaF
Код
window.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);

только я не понял чего ты хочешь этим добится? Лично я предпочитаю для полноэкранного режима использовать JFrame т.к. он может получать события от мыши и клавиатуры, а с JWindow у меня такого не получилось.

Автор: simanyay 5.6.2004, 21:46
А как ты убираешь верхнюю панель?

Автор: simanyay 6.6.2004, 11:06
Всё! Вот моё расследование smile.gif

1. У меня стоит J2SDK 1.4.2, но когда я использовал какие-либо методы, которые появились только в 1.4 Java очень странно себя вела. Компилятор (javac) компилил, а интерпретатор (java) выдавал ошибку
Код
java.lang.NoSuchMethodError


2. Сначала я подумал про баг в J2SDK, и начал задумываться о JWindow.
3. Благодаря LSD я опять вернулся к мысли, что ошибка или в моей системе или во мне smile.gif
4. Ну и наконец-то нашёл: Oracle 9i установил свой JRE (о чем я знал заранее), но получилось так, что компилятор использовался от 1.4.2, а интерпретатор от 1.3.1, т.е. Oracle'вский. После некоторых манипуляций с PATH, я поставил всё на место.

Так вот. Вот он: альтернативный способ FullScreen in Java smile.gif
Код

import javax.swing.*;

public class Test {
public static void main(String args[]) {
 JFrame frame = new JFrame();
 frame.setUndecorated(true);
 frame.pack();
 frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
 frame.setVisible(true);
}
}


Почему я не выбрал Full-Screen Exclusive Mode API:
Данный API целесообразно использовать при программировании игр, заставок и т.д. Так как там используется оптимизированный алгоритм для прорисовки графики. Ну а если необходимо, просто приложение в FullScreen (e.g. программа тестирования), то здесь IMHO лучше использовать вышеприведенный метод smile.gif

P.S. Ещё раз большое спасибо LSD за направление на путь истинный smile.gif

Автор: LSD 6.6.2004, 15:04
Цитата(simanyay @ 6.6.2004, 11:06)
Почему я не выбрал Full-Screen Exclusive Mode API:
Данный API целесообразно использовать при программировании игр, заставок и т.д. Так как там используется оптимизированный алгоритм для прорисовки графики. Ну а если необходимо, просто приложение в FullScreen (e.g. программа тестирования), то здесь IMHO лучше использовать вышеприведенный метод smile.gif

Я использую Full-Screen Exclusive Mode API для реализации screensaver в моей программе. Кстати у меня пока есть возможность протестировать этот пример только в Windows, но было-бы неплохо посмотреть как он будет себя вести под другими ОС (с JDK 1.4.1 были проблемы но некоторые из них решились с переходом на JDK 1.4.2), так что тема эта новая (Full-Screen Exclusive Mode) и надо тщательно тестировать. Если будет интерестно то давайте попробуем совместными усилиями с этим разобраться. smile.gif

Автор: simanyay 6.6.2004, 19:05
Интересует. Только, к сожалению, после сессии. т.е. в июле. А так, с удовольствием smile.gif

Автор: LSD 6.6.2004, 22:40
Как появится время пишите, обсудим.

Автор: Domestic Cat 7.6.2004, 15:39
Esli hotite ottestit' v Mac OS X - vsegda pozhaluista.

Автор: simanyay 7.6.2004, 19:32
Где-то в июле начнём. LSD - Windows, я - Linux, Domestic Cat - MacOS X

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)