JInternalFrame vor Java2D-Zeichnung langsam bzw. Gui friert ein

XELLEX

Neues Mitglied
Hi Leute,

ich bin grade dabei ein kleines Spiel zu programmieren. Dabei wird das Spielgeschehen mit Hilfe von Java2D auf ein JDesktopPane gezeichnet.
Nun war der Plan ein verschiebbares Bau-Menü in Form eines JInternalFrames, der im DesktopPane hinzugefügt wird, über die Zeichnung zu legen. Das Anzeigen funktioniert soweit auch sehr gut.
Allerdings macht das Verschieben ein paar Probleme: das ganze laggt ein wenig, d.h. der Frame läuft dem Mauszeiger bei schnelleren Bewegungen hinterher und man sieht ein paar Millisekunden lang noch Teile des Frames an seiner ursprünglichen Stelle.
Um das zu umgehen habe ich dann versucht den Drag-Mode des DesktopPanes auf "Outline" zu stellen. Im Fenster funktioniert es bestens, bei Vollbild friert jedoch die gesamte Anzeige ein, sobald ich versuche den Frame zu verschieben.

Hättet ihr da spontan ein paar Tipps/ Lösungsvorschläge? Ich persönlich würde eine Lösung zu dem Outline-Problem im Fullscreen favorisieren... 😉

Gruß XELLEX
 
Entschuldigung für den Doppelpost - Editieren war nicht möglich...

Ich habe das ganze jetzt mal auf das kleinst-mögliche Szenario runtergebrochen, um einige Faktoren auszuschließen: komplett leeres DesktopPane, einen InternalFrame draufgesetzt und das Fenster als Fullscreen anzeigen lassen.
Fazit:
wie vorher - Laggs im Live-Mode, Freeze im Outline-Mode - als Fenster läuft hingegen alles problemlos

Hier mal mein Code, um das Fenster als Fullscreen anzeigen zu lassen:
Java:
    private boolean fullscreen;

    public void setFullscreen(boolean pFullscreen)
    {
        if(fullscreen != pFullscreen)
        {
            GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
            setVisible(false);
            dispose();
            if(pFullscreen)
            {
                setUndecorated(true);
                device.setFullScreenWindow(this);
            }
            else
            {
                setUndecorated(false);
                device.setFullScreenWindow(null);
            }
            fullscreen = pFullscreen;
            setVisible(true);
        }
    }
Funktioniert super, bis auf das Problem mit dem InternalFrame...
 
Zuletzt bearbeitet:

Zurück
Oben