Я пытаюсь нарисовать что-то на холсте, добавить его в JFrame, а затем установить этот JFrame в полноэкранный режим. Моя проблема: в полноэкранном режиме я вижу только черный экран.
Перед тем, как экран почернел, я вскоре вижу розовый фон холста.
Рисование непосредственно на JFrame, а затем установка его в полноэкранный режим работает отлично, и я вижу тестовый текст. Я предполагаю, что есть проблема с отображением Canvas правильно.
Вот мой код:
public class FullscreenTest extends Canvas {
private JFrame mainFrame;
public FullscreenTest(){
this.mainFrame = new JFrame();
JPanel contentPane = (JPanel) mainFrame.getContentPane();
contentPane.add(this);
}
public void run(DisplayMode dm){
setBackground(Color.PINK);
setForeground(Color.WHITE);
setFont(new Font("Arial", Font.PLAIN, 24));
Screen s = new Screen();
s.setFullScreen(dm, this.mainFrame);
try {
Thread.sleep(5000);
} catch (InterruptedException exc) { exc.printStackTrace(); }
s.closeFullScreenWindow();
}
public void paint(Graphics g){
g.drawString("This is some testtext", 200, 200);
}
public static void main(String[] args){
DisplayMode dm = new DisplayMode(800, 600, 32, DisplayMode.REFRESH_RATE_UNKNOWN);
FullscreenTest test = new FullscreenTest();
test.run(dm);
}
}
Вот что делает метод Screen.setFullScreen (DisplayMode dm, окно JFrame):
//graphicsDevice = GraphicsEnvironment.getLocalGraphicsEnvironment()
// .getDefaultScreenDevice();
public void setFullScreen(DisplayMode dm, JFrame window){
window.setUndecorated(true);
window.setResizable(false);
graphicsDevice.setFullScreenWindow(window);
if(dm != null && graphicsDevice.isDisplayChangeSupported()){
graphicsDevice.setDisplayMode(dm);
}
}
Кто-нибудь знает, почему я не вижу содержимое JFrame в полноэкранном режиме?