BufferStrategy flackert (Swing)

Damtonix

Mitglied
Guten Tag alle miteinander,

auch wenn Swing nicht mehr das aktuellste ist, möchte ich trotzdem etwas in Swing programmieren. Dazu verwende ich eine BufferStrategy. Diese hat eigentlich die Aufgabe das Flackern zu verhindern. Das funktioniert auch soweit ganz gut. Doch beim vergrößern oder verkleinern des Fensters(JFrame) flackert es doch ziemlich. Ich würde mich freuen, wenn diese Frage geklärt werden könnte. Danke!

Hier der Code (Dort kann man das Problem sehr gut sehen):

Java:
import java.awt.*;
import java.awt.image.BufferStrategy;
import javax.swing.JFrame;

public class Test extends JFrame {
    private static final long serialVersionUID = 1L;
   
    //BufferStrategy
    private BufferStrategy bufferStrategy;
       
    /*
    * Initialisieren
    */
    public void init() {
        super.setDefaultCloseOperation(EXIT_ON_CLOSE);
        super.setSize(1200, 800);
        super.setLocation((int)Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2 - 600,(int)Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2 - 400);
        super.setTitle("GAME");
        super.setVisible(true);
        super.createBufferStrategy(2);
        bufferStrategy = this.getBufferStrategy();
    }
   
    /*
    * Gibt das Graphics-Object der BufferStrategy mit.
    */
    public Graphics graphics() {
        return bufferStrategy.getDrawGraphics();
    }
   
    /*
    * Neu zeichnen
    */
    public void indicate() {
        bufferStrategy.show();
    }
   
    /*
    * Main-Methode
    */
    public static void main(String[] args) {
        Test test = new Test();
       
        test.init();
       
        while(true) {
           
            Graphics g = test.graphics(); //Graphics von bufferStrategy
           
            g.fillRect(0, 0, 100, 100);
           
            test.indicate(); //Anzeigen
           
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
           
        }
    }
}
 
Zuletzt bearbeitet von einem Moderator:

krgewb

Top Contributor
Bitte immer in Code-Tags posten.
Java:
import java.awt.*;
import java.awt.image.BufferStrategy;
import javax.swing.JFrame;

public class Test extends JFrame {
    private static final long serialVersionUID = 1L;

    // BufferStrategy
    private BufferStrategy bufferStrategy;

    /*
     * Initialisieren
     */
    public void init() {
        super.setDefaultCloseOperation(EXIT_ON_CLOSE);
        super.setSize(1200, 800);
        super.setLocation((int) Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2 - 600,
                (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2 - 400);
        super.setTitle("GAME");
        super.setVisible(true);
        super.createBufferStrategy(2);
        bufferStrategy = this.getBufferStrategy();
    }

    /*
     * Gibt das Graphics-Object der BufferStrategy mit.
     */
    public Graphics graphics() {
        return bufferStrategy.getDrawGraphics();
    }

    /*
     * Neu zeichnen
     */
    public void indicate() {
        bufferStrategy.show();
    }

    /*
     * Main-Methode
     */
    public static void main(String[] args) {
        Test test = new Test();

        test.init();

        while (true) {

            Graphics g = test.graphics(); // Graphics von bufferStrategy

            g.fillRect(0, 0, 100, 100);

            test.indicate(); // Anzeigen

            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }
    }
}
 

Java xyrse123

Bekanntes Mitglied
Ich hatte auch so ein ähnliches Problem, weil ich getGraphics() verwendet habe, ich weiß nicht ob man es in dem Fall verwenden sollte aber generell sollte man in der überschriebenen paint() Methode Zeichen.
 

Damtonix

Mitglied
Heißt das ich soll die BufferStrategy weg lassen und einfach in die paint() Methode schreiben? Denn ich kann die Graphics der BufferStrategy zwar auslesen, aber nicht zeichnen. Ich weiß nicht warum.
 

Java xyrse123

Bekanntes Mitglied
Bei mir war das so das als ich getGraphics () verwendet habe und irgendwas auf das Fenster gezeichnet habe und dann die Fenstergröße geändert habe, wurde die komplette Zeichenfläche gelöscht. Daher kommt wahrscheinlich auch das flackern bei dir wenn du die Fenstergröße veränderst.

Und was meinst du mit "du kannst nicht zeichnen"?
Edit : vielleicht hilft dir dieser Link: https://stackoverflow.com/questions/16264329/bufferstrategy-and-swing-combined
 
Zuletzt bearbeitet:

Damtonix

Mitglied
Das Problem ist, dass immer wen man direkt auf ein JFrame zeichnet, dieses sich beim vergrößern restetet. Das ist auch der Fall, wenn man einfach nur in die paint() Methode schreibt. Das heißt ich musste eine Lösung finden, mit der ich nicht auf dem Frame zeichne. Leider kann man eine BufferStrategy nicht auf ein JPanel zeichnen. Also habe ich ein Canvas genommen und nun funktioniert es.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Z Buffer / Depth Buffer in Bufferstrategy einfügen AWT, Swing, JavaFX & SWT 1
kodela BufferStrategy wird nicht gefunden AWT, Swing, JavaFX & SWT 5
windl Bufferstrategy in Swing nachstellen AWT, Swing, JavaFX & SWT 0
H 2D-Grafik BufferStrategy zieht spur hinter sich her AWT, Swing, JavaFX & SWT 3
M Problem mit bufferstrategy AWT, Swing, JavaFX & SWT 2
A 2D-Grafik Zeichnen einer sich bewegenden Box mit BufferStrategy zieht Spur AWT, Swing, JavaFX & SWT 2
S Exception bei BufferStrategy AWT, Swing, JavaFX & SWT 8
R Verständnisfrage BufferStrategy: g.dispose() AWT, Swing, JavaFX & SWT 3
G Canvas, JMenu, und BufferStrategy AWT, Swing, JavaFX & SWT 2
N Performance (BufferStrategy?) AWT, Swing, JavaFX & SWT 2
D JavaFX Label flackert beim aktualisieren AWT, Swing, JavaFX & SWT 12
M Warum flackert das Bild ? (Swing) AWT, Swing, JavaFX & SWT 16
frankred Swing Eigener ListCellRenderer D'n'D "MOVE" - Mauszeiger flackert AWT, Swing, JavaFX & SWT 14
T Swing OpenOffice IFrame flackert beim ändern der Größe AWT, Swing, JavaFX & SWT 6
K Swing Spiel flackert sehr häufig AWT, Swing, JavaFX & SWT 2
J Applet Tetris flackert AWT, Swing, JavaFX & SWT 9
D 2D-Grafik Animation flackert AWT, Swing, JavaFX & SWT 8
J Swing JWindow flackert trotz Doppelpufferung AWT, Swing, JavaFX & SWT 2
B Swing JButton flackert trotz DoubleBufferings AWT, Swing, JavaFX & SWT 11
J Swing JEditorPane flackert AWT, Swing, JavaFX & SWT 2
H Swing JWindow flackert beim resizen AWT, Swing, JavaFX & SWT 6
Dragonfire ZoomImage flackert -> Fehler: repaint-Aufruf [gelöst] AWT, Swing, JavaFX & SWT 5
P Image auf JPanel flackert AWT, Swing, JavaFX & SWT 3
M DragAndDrop-Waypoints bewegen, ABER Bildschirm flackert AWT, Swing, JavaFX & SWT 3
B JPanel#paintComponent(Graphics g) << flackert oO AWT, Swing, JavaFX & SWT 3
J JProgressBar flackert AWT, Swing, JavaFX & SWT 14
C JScrollPane flackert AWT, Swing, JavaFX & SWT 10
F JScrollPane ruckelt/flackert AWT, Swing, JavaFX & SWT 5
S [Swing] Tabelle flackert AWT, Swing, JavaFX & SWT 8
Juelin javax.swing in javafx AWT, Swing, JavaFX & SWT 1
A Eclipse 2023 und Swing AWT, Swing, JavaFX & SWT 4
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
H Swing Componente zur Läufzeit ändern AWT, Swing, JavaFX & SWT 3
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
H Swing Buttons erst nach Klick sichtbar AWT, Swing, JavaFX & SWT 13
ExceptionOfExpectation Anpassung von JKomponentengrößen (Swing) AWT, Swing, JavaFX & SWT 3
thor_norsk AWT SWING Aufgabe AWT, Swing, JavaFX & SWT 7
U Zwei Fragen zu eienr Swing Aufgabe AWT, Swing, JavaFX & SWT 2
M Swing Bilder in Swing anzeigen AWT, Swing, JavaFX & SWT 9
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
H Simple Animation mit Swing AWT, Swing, JavaFX & SWT 2
Guybrush Threepwood Einfachste Möglichkeit zum Abspielen eines Videos in Swing AWT, Swing, JavaFX & SWT 4
A Swing ProgressBar über 2 parallel laufende Threads AWT, Swing, JavaFX & SWT 2
M Swing GridLayout AWT, Swing, JavaFX & SWT 2
O return-Statement mit Swing AWT, Swing, JavaFX & SWT 6
O Ein Java-Programm mit Swing steuern AWT, Swing, JavaFX & SWT 1
Monokuma Swing zu JavaFX AWT, Swing, JavaFX & SWT 5
J Swing Slider AWT, Swing, JavaFX & SWT 11
G Thread starten Swing AWT, Swing, JavaFX & SWT 5
G Swing JPasswordField AWT, Swing, JavaFX & SWT 12
L Swing Button Farbe ändern/wechseln AWT, Swing, JavaFX & SWT 2
C Swing AWT GUI Anfänger Aufgabe AWT, Swing, JavaFX & SWT 7
W Inject bei einem Swing Frontend AWT, Swing, JavaFX & SWT 8
L Kommunikation zwischen Klassen / Konstruktoren bei Swing AWT, Swing, JavaFX & SWT 9
M Feldvalidierung swing AWT, Swing, JavaFX & SWT 4
E Swing Componenten werden nach Änderung des display modes verzerrt dargestellt AWT, Swing, JavaFX & SWT 8
D [Swing] Anordnung von Komponenten mit GridLayout Manager AWT, Swing, JavaFX & SWT 13
O Zukunft von Swing und JavaFX ? AWT, Swing, JavaFX & SWT 3
S Swing Fenster State Machine AWT, Swing, JavaFX & SWT 1
T Swing Swing an Bildschirm anpassen AWT, Swing, JavaFX & SWT 3
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
M Swing Java Swing/AWT Combobox Bug AWT, Swing, JavaFX & SWT 3
M Swing GUI mittels erben sowie variabler Dateninhalt AWT, Swing, JavaFX & SWT 1
W Swing Multitouch mit Swing AWT, Swing, JavaFX & SWT 6
S Swing-Applikation die ein Numpad nachbildet samt Keybindings..? AWT, Swing, JavaFX & SWT 5
S Swing Java Swing AWT, Swing, JavaFX & SWT 6
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
J Swing oder JavaFX AWT, Swing, JavaFX & SWT 21
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
D SQL Statements mit Java Swing benutzen AWT, Swing, JavaFX & SWT 4
D DatePicker für Java Swing AWT, Swing, JavaFX & SWT 2
B JavaFX oder swing AWT, Swing, JavaFX & SWT 3
T Java Swing - kleines Rechteck unter dem cursor AWT, Swing, JavaFX & SWT 5
L 2D-Grafik Swing paint|paintComponent AWT, Swing, JavaFX & SWT 2
L Swing Größe automatisch anpassen AWT, Swing, JavaFX & SWT 14
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
Blender3D Meine Swing Anwendung läuft unter Windows 10 und Ubuntu aber nicht auf Windows 7 AWT, Swing, JavaFX & SWT 16
B Bar Plot in Swing JPanel AWT, Swing, JavaFX & SWT 0
D Swing in Kombination mit JGraphX und JGraphT AWT, Swing, JavaFX & SWT 0
F main-Funktion bei Swing AWT, Swing, JavaFX & SWT 4
S Java Swing Print() method AWT, Swing, JavaFX & SWT 4
S Java Swing auf Windows Phone AWT, Swing, JavaFX & SWT 6
I JAVAFX - Übergabe der Inhalte an eine Scene - Wo ist der Vorteil gegenüber Swing? AWT, Swing, JavaFX & SWT 2
S Manuelles Menu in Swing AWT, Swing, JavaFX & SWT 3
T Custom Window ohne Swing / AWT / FX..?! AWT, Swing, JavaFX & SWT 1
MaxG. Swing Swing Komponenten zur Laufzeit hinzufügen AWT, Swing, JavaFX & SWT 2
Java_RY Bin Ratlos bzgl Malen in Swing AWT, Swing, JavaFX & SWT 5
offi Swing Shuttle List AWT, Swing, JavaFX & SWT 9
I Graph mit Swing zeichnen AWT, Swing, JavaFX & SWT 8
D Swing Swing Objekte sehen im Entwurf anders aus als beim Ausführen AWT, Swing, JavaFX & SWT 3
S Swing & Clean und build Problem AWT, Swing, JavaFX & SWT 12
javampir Swing repaint in JavaFX Anwendung AWT, Swing, JavaFX & SWT 3
K Mit JavaFX angefangen. Lohnt sich Swing? AWT, Swing, JavaFX & SWT 28
B Swing Update Swing Komponente bevor Methode startet. AWT, Swing, JavaFX & SWT 4
B Swing Tabelle(JTable) filtern swing GUI AWT, Swing, JavaFX & SWT 3
M Swing Swing-Widgets und paintComponent() AWT, Swing, JavaFX & SWT 2
B Swing WindowBuilde: Menu -> anderes Panel wechseln AWT, Swing, JavaFX & SWT 1
K eigener button in swing AWT, Swing, JavaFX & SWT 3
A JavaFX DatePicker in Swing beim Start nicht sichtbar AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben