Как реализовать режим полноэкранного режима для оконной программы JavaJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как реализовать режим полноэкранного режима для оконной программы Java

Сообщение Anonymous »

Ожидание: будет легко реализовать режим полноэкранного режима для моего приложения Java ( вилка существующего приложения, для которого код обширный и может быть очень трудно работать с ) Полем Все, что мне нужно сделать, это удалить границу и строку меню, установить раму размеру экрана, убедиться, что она «всегда на вершине». Несколько строк кода, 1 часовые топы, немного тестирования. P> Это было относительно просто, теперь это отдельный вариант, с помощью которого пользователи могут выбрать/скрыть строку меню, если они хотят. Готово.
Шаг 2: Удаление границы. Установите параметр «Полный экран» и вызовите этот метод после выхода из меню конфигурации (использование setundecorated (true)): < /p>
void toggleFullScreen() {
boolean shouldDisplayFullScreen = GameController.isOptionEnabled(GameController.Options.FULL_SCREEN);
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();

if (shouldDisplayFullScreen) {
Core.saveProgramProps(); // Store current window size and position
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setExtendedState(JFrame.NORMAL); // Reset state before changing size
setUndecorated(true)
setJMenuBar(null); // Hide the menu bar
setSize(screenSize.width, screenSize.height);
setLocation(0, 0);
setAlwaysOnTop(true);
setResizable(false);
} else {
// Restore windowed mode - TODO: This currently fires every time the Options menu is opened and closed; we need to see if fullscreen has actually changed
setAlwaysOnTop(false);
applyPropsWindowSize();
applyPropsWindowPosition();
toggleMenuBarVisibility(); // Restore the menu bar depending on props
setResizable(true);
setUndecorated(false);
}

validate();
< /code>
} < /p>
Мы получаем эту ошибку: < /p>
public void setUndecorated(boolean undecorated) {
/* Make sure we don't run in the middle of peer creation.*/
synchronized (getTreeLock()) {
if (isDisplayable()) {
throw new IllegalComponentStateException("The frame is displayable.");
< /code>
erm...ok? Ну, конечно, кадр нуждается в , чтобы отображаться, чтобы ... быть отображаемым! Очевидно, нет, поэтому я добираюсь до поиска Google и в конечном итоге нахожу эту ветку. С небольшим количеством маневрирования, я добавляю пример кода в основной класс, чтобы запустить, как только приложение запускается, и в качестве поведения по умолчанию (исключительно для целей тестирования на данный момент, в конечном итоге мы хотим полного управления режимом полного экрана): < /p>
public MainFrame() {
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
device = env.getDefaultScreenDevice();
isFullScreen = device.isFullScreenSupported();

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setUndecorated(isFullScreen);
setResizable(false);

if (isFullScreen) {
device.setFullScreenWindow(this);
} else {
// Windowed mode behavior
setExtendedState(JFrame.MAXIMIZED_BOTH);
}

// Apply other initializations after fullscreen/window setup
try {
String currentFolderStr = URLDecoder.decode(getClass().getProtectionDomain().getCodeSource().getLocation().getFile(), "UTF-8");
System.out.println("Current directory: " + currentFolderStr);
boolean successful = Core.init(currentFolderStr); // initialize Core object
if (!successful) {
System.exit(0);
}
} catch (LException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
System.exit(1);
} catch (Throwable ex) {
ToolBox.showException(ex);
System.exit(1);
}

initComponents();

if (!isFullScreen)
setMinimumSize(getSize());

RepeatingReleasedEventsFixer.install();

setVisible(true);
}
< /code>
И, наконец, мы где -то получаем. Теперь окно можно отобразить. Но я получаю ton ошибки (не стоит печатать их здесь), окно не охватывает ширину экрана и исчезает за другими активными окнами, когда открывается подпонавочный. Не идеально, но, по крайней мере, мы знаем, что приложение может поддержка без границ и т. Д.
Однако единственная причина, по которой это работало . > Это потому, что все это настраивается до отображения окна. После того, как он отобразится, исходный метод «переключения» по -прежнему генерирует одну и ту же «кадр отображается», когда мы пытаемся переключиться между двумя режимами. в один метод и быть вызовом, независимо от того, отображается ли окно, так как точка должна иметь возможность переключаться между полноэкранным и окном, пока приложение открыто. п>

Подробнее здесь: https://stackoverflow.com/questions/794 ... va-program
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»