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




Очевидный ответ - не используйте апплеты. Напишите приложение, которое использует JFrame или JWindow в качестве контейнера верхнего уровня. Преобразовать апплет в приложение не так уж и сложно. Апплеты предназначены для встраивания во что-то еще, обычно в веб-страницу.
Если у вас уже есть апплет и вы хотите сделать его полноэкранным, есть два быстрых и грязных приема:
1). Если вам известно разрешение экрана, просто установите для параметров апплета этот размер в HTML, а затем запустите браузер в полноэкранном режиме.
2). Запустите апплет в appletviewer, а не на веб-странице, и разверните окно appletviewer до максимума.
Я думаю, вы хотите использовать 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();
}
да, я думаю, что где-то читал, что апплеты не рекомендуются, и следует использовать java web start.