Как сделать полноэкранные java-апплеты?

Я разрабатываю психологический эксперимент с Java-апплетами. Я должен сделать свои java-апплеты полноэкранными. Как лучше всего это сделать и как я могу это сделать.

Поскольку я не использую java-апплеты в течение 3 лет (в последний раз я использовал их в качестве домашнего задания :)), я забыл большинство концепций. Я погуглил и нашел эту ссылку: Дэни Веб

Но в методе, описанном в приведенной выше ссылке, вы должны поместить JFrame внутри апплета, и я понятия не имею, как это сделать.

Независимо от того, что мне нужно, быстрый и грязный метод, потому что у меня не так много времени, и это причина, по которой я спросил об этом здесь.

Заранее спасибо

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
11
0
21 980
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Очевидный ответ - не используйте апплеты. Напишите приложение, которое использует JFrame или JWindow в качестве контейнера верхнего уровня. Преобразовать апплет в приложение не так уж и сложно. Апплеты предназначены для встраивания во что-то еще, обычно в веб-страницу.

Если у вас уже есть апплет и вы хотите сделать его полноэкранным, есть два быстрых и грязных приема:

1). Если вам известно разрешение экрана, просто установите для параметров апплета этот размер в HTML, а затем запустите браузер в полноэкранном режиме.

2). Запустите апплет в appletviewer, а не на веб-странице, и разверните окно appletviewer до максимума.

да, я думаю, что где-то читал, что апплеты не рекомендуются, и следует использовать java web start.

Johannes Schaub - litb 10.01.2009 18:06
Ответ принят как подходящий

Я думаю, вы хотите использовать WebStart. Вы можете выполнить развертывание из браузера, но в остальном это полноценное приложение. Есть несколько ограничений безопасности браузера, но, поскольку вы сейчас используете апплет, я думаю, что могу предположить, что это не проблема.

Почему бы просто не открыть новый фрейм из апплета (либо с помощью метода «start ()», либо, желательно, после того, как пользователь нажмет кнопку «открыть») и не установить его максимальным размером?

JFrame frame = new JFrame();
//more initialization code here
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
frame.setSize(dim.width, dim.height);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

Не забывайте: JFrame должен быть создан и открыт из EDT. Вызов апплета start () в этом потоке не гарантируется, поэтому используйте SwingUtilities.invokeLater (). Конечно, если вы выберете маршрут кнопок, прослушиватель кнопок будет вызван в EDT, так что вы должны быть в безопасности.

Я нашел решение для этой проблемы, которая отлично работает. Протестировано в 64-разрядной версии Linux (Chrome и Firefox) и в 64-разрядной версии Windows 7 (Chrome и Explorer).

Единственная проблема заключалась в том, что мой апплет использует все пространство в браузере, и когда пользователь выключает полноэкранный режим, апплет не масштабируется до размера браузера. Решением было сохранить предыдущий размер апплета перед переходом в полноэкранный режим, а затем установить этот размер, когда апплет вернется в нормальный режим:

public void setFullScreen() {   
        if (!this.fullscreen) {
            size = this.getSize();
            if (this.parent == null) {
                this.parent = getParent();
            }
            this.frame = new Frame();
            this.frame.setUndecorated(true);
            this.frame.add(this);
            this.frame.setVisible(true);

            GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
            GraphicsDevice[] devices = ge.getScreenDevices();
            devices[0].setFullScreenWindow(this.frame);
            this.fullscreen = true;
        } else {
            if (this.parent != null) {
                this.parent.add(this);
            }
            if (this.frame != null) {
                this.frame.dispose();
            }
            this.fullscreen = false;
            this.setSize(size);
            this.revalidate();
        }       
        this.requestFocus();
    }

Другие вопросы по теме