Hallo,
ich versuche gerade gemäß dem Sun Tutorial über den Fullscreen Mode einen Test zu schreiben. Soweit ich sehe passiert in meinem Code eig. das gleiche wie in Sun's Bsp, allerdings funktioniert es nicht. Sun's Bsp dahingegen funktioniert. Ich sehe aber den Fehler nicht...
Das Bsp das ich adaptiere ist dieses.
Bei meinem Code swicht er in den Fullscreen Mode, aber der Bildschirm bleibt schwarz bzw. dunkelgrau. Außerdem passiert es manchmal dass ich ihn gar nicht mehr verlassen kann. Weder mit ESCAPE, obwohl ich am Fenster nen KeyListener habe, noch mit ALT+F4 oder Affengriff. Ich muss dann rebooten...
Also Vorsicht falls ihr mein Bsp starten wollt!
Hier nun mein Code:
Was mach ich falsch? Danke!
ich versuche gerade gemäß dem Sun Tutorial über den Fullscreen Mode einen Test zu schreiben. Soweit ich sehe passiert in meinem Code eig. das gleiche wie in Sun's Bsp, allerdings funktioniert es nicht. Sun's Bsp dahingegen funktioniert. Ich sehe aber den Fehler nicht...
Das Bsp das ich adaptiere ist dieses.
Bei meinem Code swicht er in den Fullscreen Mode, aber der Bildschirm bleibt schwarz bzw. dunkelgrau. Außerdem passiert es manchmal dass ich ihn gar nicht mehr verlassen kann. Weder mit ESCAPE, obwohl ich am Fenster nen KeyListener habe, noch mit ALT+F4 oder Affengriff. Ich muss dann rebooten...
Also Vorsicht falls ihr mein Bsp starten wollt!
Hier nun mein Code:
Java:
import java.awt.DisplayMode;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
public class Main {
public static void main(String[] args) {
GraphicsDevice monitor = GraphicsEnvironment
.getLocalGraphicsEnvironment().getDefaultScreenDevice();
MyWindow window = new MyWindow(monitor);
try {
monitor.setFullScreenWindow(window);
monitor.setDisplayMode(new DisplayMode(1024, 768, 32,
DisplayMode.REFRESH_RATE_UNKNOWN));
window.createBufferStrategy(2);
new Game(window).start();
} catch (IllegalArgumentException e) {
System.out.println("Display mode not supported");
System.exit(-1);
} catch (UnsupportedOperationException e) {
System.out.println("Display mode cannot be changed");
System.exit(-1);
}
finally {
monitor.setFullScreenWindow(null);
}
}
}
Java:
import java.awt.Frame;
import java.awt.GraphicsDevice;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class MyWindow extends Frame {
public MyWindow(final GraphicsDevice monitor) {
super(monitor.getDefaultConfiguration());
setUndecorated(true);
setResizable(false);
setIgnoreRepaint(true);
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
monitor.setFullScreenWindow(null);
System.exit(0);
}
}
});
}
}
Java:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Window;
import java.awt.image.BufferStrategy;
import java.util.Random;
public class Game extends Thread {
private Window window;
public Game(Window window) {
this.window = window;
}
@Override
public void run() {
while (true) {
BufferStrategy bufferStrategy = window.getBufferStrategy();
for (int i = 0; i < 2; i++) { // 2 buffers
Graphics g = bufferStrategy.getDrawGraphics();
if (!bufferStrategy.contentsLost()) {
Random r = new Random();
g.setColor(new Color(r.nextInt(255), r.nextInt(255), r
.nextInt(255)));
g.fillRect(0, 0, window.getWidth(), window.getHeight());
bufferStrategy.show();
g.dispose();
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
}
}
}
}
Was mach ich falsch? Danke!