# getFullScreenMode()



## Reality (29. Aug 2004)

Hi,
erst mal der Code:


```
//Restore the screen´s display mode.
  public void restoreScreen(){
    Window window = device.getFullScreenWindow();

    if(window != null){
      window.dispose(); //dispose = einrichten
    }

    device.setFullScreenWindow(null);
  }
```

Diese Methode geht wieder ins normale Modus über, also nicht mehr Vollbildmodus.

Da heisst es aber:

```
Window window = device.getFullScreenWindow();
```
Wenn ich im Vollbildmodus bin, gibt er doch die Werte des Vollbilds zurück. Für was ist das also gut?

Liebe Grüße
Reality


----------



## Grizzly (29. Aug 2004)

Die Methode setFullScreenWindow setzt das Fenster für den Vollbild-Modus. Wen man _null_ als Parameter übergibt, deaktiviert man den Vollbild-Modus. Und das aktuelle Vollbild-Modus-Fenster bekommt man mit getFullScreenWindow.

So gibt folgender Code-Fetzen:

```
Window window = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getFullScreenWindow();
System.out.println("window = " + window);
```
nämlich _window = null_ zurück, da ja davor kein Vollbild-Modus-Fenster gesetzt worden ist.


----------



## Reality (29. Aug 2004)

Hi,


			
				Grizzly hat gesagt.:
			
		

> nämlich _window = null_ zurück, da ja davor kein Vollbild-Modus-Fenster gesetzt worden ist.


ich habe ja nur ein Code-Ausschnitt gepostet. Wenn diese Methode ausgeführt wird, bin ich im Vollbildmodus. Aber .getFullScreenWindow() gibt doch nur das Window-Objekt des Vollbildmodus zurück.
Was ist der Zweck? (Der Code ist nicht von mir uns er funktioniert).

Liebe Grüße
Reality


----------



## Beni (29. Aug 2004)

Reality hat gesagt.:
			
		

> Was ist der Zweck?


Dass du rausfindest, welches Fenster im Vollbildschirmstatus ist.


----------



## Reality (29. Aug 2004)

Hi Beni,
danke mal wieder. 
Warum läuft die Anwendung im Hintergrund noch weiter, wenn ich die if-Anweisung und somit den dispose()-Befehl weglasse?

Liebe Grüße
Reality


----------



## Beni (29. Aug 2004)

Dann wird ja nur dieser Teil ausgeführt:

```
device.setFullScreenWindow(null);
```

... und der besagt nur, dass es kein Vollbildschirmfenster mehr gibt. Das ehemalige Fenster wird halt einfach verkleinert, und läuft so weiter.


----------



## Reality (1. Sep 2004)

Hi,
kann mir jemand erklären, warum hier von wait() und notify() die Rede ist, obwohl nur ein Thread läuft?
Dann wäre noch hilfreich, wenn ihr mir verratet was es bedeutet, wenn einer Zahl ein "f" angehängt wird.


```
import java.awt.*;
import javax.swing.ImageIcon;
import javax.swing.JFrame;

public class ImageSpeedTest extends JFrame {

    public static void main(String args[]) {

        DisplayMode displayMode;

        if (args.length == 3) {
            displayMode = new DisplayMode(
                Integer.parseInt(args[0]),
                Integer.parseInt(args[1]),
                Integer.parseInt(args[2]),
                DisplayMode.REFRESH_RATE_UNKNOWN);
        }
        else {
            displayMode = new DisplayMode(800, 600, 16,
                DisplayMode.REFRESH_RATE_UNKNOWN);
        }

        ImageSpeedTest test = new ImageSpeedTest();
        test.run(displayMode);
    }

    private static final int FONT_SIZE = 24;
    private static final long TIME_PER_IMAGE = 1500;

    private SimpleScreenManager screen;
    private Image bgImage;
    private Image opaqueImage;
    private Image transparentImage;
    private Image translucentImage;
    private Image antiAliasedImage;
    private boolean imagesLoaded;

    public void run(DisplayMode displayMode) {
        setBackground(Color.blue);
        setForeground(Color.white);
        setFont(new Font("Dialog", Font.PLAIN, FONT_SIZE));
        imagesLoaded = false;

        screen = new SimpleScreenManager();
        try {
            screen.setFullScreen(displayMode, this);
            synchronized (this) {
                loadImages();
                // wait for test to complete
                try {
                    wait();
                }
                catch (InterruptedException ex) { }
            }
        }
        finally {
            screen.restoreScreen();
        }
    }


    public void loadImages() {
        bgImage = loadImage("images/background.jpg");
        opaqueImage = loadImage("images/opaque.png");
        transparentImage = loadImage("images/transparent.png");
        translucentImage = loadImage("images/translucent.png");
        antiAliasedImage = loadImage("images/antialiased.png");
        imagesLoaded = true;
        // signal to AWT to repaint this window
        repaint();
    }


    private final Image loadImage(String fileName) {
        return new ImageIcon(fileName).getImage();
    }


    public void paint(Graphics g) {
        // set text anti-aliasing
        if (g instanceof Graphics2D) {
            Graphics2D g2 = (Graphics2D)g;
            g2.setRenderingHint(
                RenderingHints.KEY_TEXT_ANTIALIASING,
                RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        }

        // draw images
        if (imagesLoaded) {
            drawImage(g, opaqueImage, "Opaque");
            drawImage(g, transparentImage, "Transparent");
            drawImage(g, translucentImage, "Translucent");
            drawImage(g, antiAliasedImage,
              "Translucent (Anti-Aliased)");

            // notify that the test is complete
            synchronized (this) {
                notify();
            }
        }
        else {
            g.drawString("Loading Images...", 5, FONT_SIZE);
        }
    }


    public void drawImage(Graphics g, Image image, String name) {
        int width = screen.getFullScreenWindow().getWidth() -
            image.getWidth(null);
        int height = screen.getFullScreenWindow().getHeight() -
            image.getHeight(null);
        int numImages = 0;

        g.drawImage(bgImage, 0, 0, null);

        long startTime = System.currentTimeMillis();
        while (System.currentTimeMillis() - startTime
            < TIME_PER_IMAGE)
        {
            int x = Math.round((float)Math.random() * width);
            int y = Math.round((float)Math.random() * height);
            g.drawImage(image, x, y, null);
            numImages++;
        }
        long time = System.currentTimeMillis() - startTime;
        float speed = numImages * 1000f / time;
        System.out.println(name + ": " + speed + " images/sec");

    }

}
```


----------



## Beni (1. Sep 2004)

Reality hat gesagt.:
			
		

> kann mir jemand erklären, warum hier von wait() und notify() die Rede ist, obwohl nur ein Thread läuft?


Die graphische Oberfläche sorgt noch für eine ganze Menge zusätzlicher Threads, die werden hier ausgenutzt (benutz mal einen guten Debugger, du wirst erstaunt sein, was da noch alles im Hintergrund abläuft :wink: )



			
				Reality hat gesagt.:
			
		

> Dann wäre noch hilfreich, wenn ihr mir verratet was es bedeutet, wenn einer Zahl ein "f" angehängt wird.


Dann ist sie ein Float:

```
float blupp = 12.34f; // funktioniert
float bla = 12.34; // Compilererror, weil ein Double keinem Float ohne Cast zugewiesen werden kann.
```


----------



## Reality (1. Sep 2004)

Verstehen ist möglich; durch Beni. :applaus: 

Oder:

Lern lesen und schreiben mit Beni. 

*Orden überreich* [schild=11 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]Orden für gute Leistung und Treue[/schild]

Liebe Grüße
Reality


----------



## Beni (1. Sep 2004)




----------



## Illuvatar (1. Sep 2004)

In meinem Subforum wird diesem Ursupator (oder so ähnlich :wink: ) kein Orden überreicht! *lösch*  :bae:


----------

