Сделать апплет JNLP Web-Start изменяемого размера - PullRequest
2 голосов
/ 03 февраля 2012

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

Сначала я думал, что это простая настройка в файле JNLP, но теперь я не уверен. Как мне подходить к этому?

Ответы [ 3 ]

2 голосов
/ 03 февраля 2012

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

OTOH немного хакерства может привести вас туда.Я могу вспомнить, что делал это когда-то (давно).Я думаю, что из памяти в основном задействовано getParent() в цикле до null, последним компонентом до этого был JFrame.Если у вас есть ссылка на фрейм, вы можете позвонить setResizable(true).

На самом деле (считает) вы также можете заглянуть в JComponent.getTopLevelAncestor() для получения ссылки на корневой фрейм,AFIU, что метод не существовал, когда я попробовал эксперимент.(Да, это было , что давно.)

Конечно, общая лучшая стратегия заключается в создании гибридного приложения / апплета.Вставьте апплет в браузер и запустите фрейм с помощью JWS.Это обеспечивает полный контроль над графическим интерфейсом.

0 голосов
/ 08 октября 2018

У меня работал следующий код:

Window window = SwingUtilities.windowForComponent(this);
if (window instanceof JFrame) {
    JFrame frame = (JFrame) window;
    if (!frame.isResizable()) {
        frame.setResizable(true);
    }
}
0 голосов
/ 16 февраля 2018

Вот немного кода, который я добавил в конце моего init метода, который сделал мой апплет изменяемого размера. Мой класс расширяется JApplet.

Window window = SwingUtilities.windowForComponent(this);
if (window instanceof JFrame) {
    JFrame frame = (JFrame) window;
    if (!frame.isResizable()) {
        frame.setResizable(true);
    }
}

Надеюсь, это поможет.

...