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

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

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

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

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

Спасибо заранее


person systemsfault    schedule 10.01.2009    source источник


Ответы (4)


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

person sblundy    schedule 10.01.2009

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

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

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

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

person Dan Dyer    schedule 10.01.2009
comment
да, я думаю, что где-то читал, что апплеты не рекомендуются, и следует использовать веб-запуск Java. - person Johannes Schaub - litb; 10.01.2009

Почему бы просто не открыть новый кадр из апплета (либо из метода «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, поэтому вы должны быть в безопасности.

person Ran Biron    schedule 10.01.2009

Я нашел решение для этой задачи работает нормально. Протестировано в 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();
    }
person Jorge Piera Llodrá    schedule 19.08.2013