Как сделать полноэкранные Java-апплеты?
Я разрабатываю эксперимент по психологии с java-апплетами. Я должен сделать мои java-апплеты в полноэкранном режиме. Каков наилучший способ сделать это и как я могу это сделать.
Поскольку я не использовал java-апплеты в течение 3 лет (последний раз, когда я использовал это для домашней работы по курсу:)) Я забыл большинство концепций. Я googled и нашел, что ссылка:
Дани веб
Но в методе, описанном в ссылке выше, вы должны поместить JFrame внутри апплета, который я понятия не имею, как это сделать.
Мне нужен быстрый и грязный метод, потому что у меня мало времени, и именно по этой причине я спросил его здесь.
Thanx заранее
Ответы
Ответ 1
Я думаю, вы хотите использовать WebStart. Вы можете развернуть его из браузера, но в противном случае это приложение полностью взорвано. Существует несколько ограничений безопасности браузера, но, поскольку вы используете аплет в настоящее время, я думаю, что могу предположить, что это не проблема.
Ответ 2
Очевидный ответ - не использовать апплеты. Напишите приложение, которое использует JFrame или JWindow в качестве своего контейнера верхнего уровня. Это не огромная работа, чтобы конвертировать апплет в приложение. Апплеты предназначены для использования во что-то еще, обычно в веб-странице.
Если у вас уже есть апплет и вы хотите сделать его полноэкранным, есть два быстрых и грязных хака:
1). Если вы знаете разрешение экрана, просто установите параметры апплета в этот размер в HTML, а затем запустите браузер в полноэкранном режиме.
2). Запустите апплет в appletviewer, а не в веб-странице, и увеличьте окно appletviewer.
Ответ 3
Почему бы просто не открыть новый фрейм из апплета (либо из метода "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 вызывается прослушиватель кнопок, поэтому вы должны быть в безопасности.
Ответ 4
Я нашел решение для этой проблемы, которое отлично работает. Протестировано в Linux 64 бита (Chrome и Firefox) и в Windows 7 64 бит (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();
}