Обработка Java 2.0 (с использованием Eclipse): переход из окна в полноэкранный и обратно

Я использую Processing 2.0 в Eclipse и задаю вопрос о переходе между оконным режимом и полноэкранным экраном для запущенного приложения (не выбирая оконный или полноэкранный режим при запуске, который легко решается).

Этот вопрос решает проблему перехода из полноэкранного режима в Java Processing в оконный режим.

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

1 ответ

Немного взломанный, но вы можете попробовать создать отдельный AWT-кадр, который является полноэкранным, и отбросить в него обработчик. Обычно для полноэкранного просмотра вам нужен только кадр с размерами экрана и без декораций (строка заголовка, кнопки закрытия и т.д.). Уловка вы не можете "декомпозировать" java.awt.Frame после того, как он был установлен на видимый (даже если вы установите видимость на false, попытайтесь декомпонировать, а затем снова создайте рамку), поэтому обойти это будет просто отдельный экземпляр Frame, уже не декорированный и с правильными размерами, в который мы отбрасываем содержимое фрейма. Также нам нужно сообщить, что обработка оценок обновляется.

Вот быстрый эскиз, иллюстрирующий идею (нажмите "f" для полноэкранного режима):

import java.awt.Frame;
Frame fullScreenFrame;
void setup(){
 fullScreenFrame = new Frame();
 fullScreenFrame.setUndecorated(true);//prepare an undecorated fullscreen frame since java won't allow you to 'undecorate' a frame after it been set visible 
 fullScreenFrame.setBounds(0,0,displayWidth,displayHeight);
 fullScreenFrame.addKeyListener(getKeyListeners()[0]);//pass key events from this applet to the fullScreen Frame
}
void draw(){
 background((float)mouseX/width * 255,(float)mouseY/height * 255,0);
}
void keyReleased(){
 if(key == 'f') {
 setBounds(0,0,displayWidth,displayHeight);//resize the skech
 fullScreenFrame.add(frame.getComponent(0));//add the applet to the fullscreen frame from Processing frame
 fullScreenFrame.setVisible(true);//make our fullscreen frame visible
 frame.setVisible(false );//and hide Processing frame
 }
}

licensed under cc by-sa 3.0 with attribution.