Вопрос

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

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

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

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

Заранее благодарю

Это было полезно?

Решение

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

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

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

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

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

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

Почему бы просто не открыть новый фрейм из апплета (либо из метода "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();
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top