BufferStrategy wird nicht gefunden

kodela

Bekanntes Mitglied
Hallo,

in meiner Klasse ChessInOut benötige ich für das Ziehen der Figuren auch "BufferStrategy".

In einer sehr schmalen Testklasse funktioniert das Ziehen der Figuren mit Einsatz von "BufferStrategy"
problemlos. In der Klasse "ChessInOut", die Teil des Gesamtprogramms ist, klappt es dagegen nicht.
"BufferStrategy" wird hier nicht. Die beiden Aufrufe "createBufferStrategy(2);" und "getBufferStrategy();"
werden nicht gefunden.

Hier ein Bild vom Klassenrumpf nur mit den Initialisierungsvorkommen von"createBufferStrategy(2);"
und "getBufferStrategy();":

1586866900786.png
Rechts unten ist ein Screeshot vom Original unter NetBeans. Im gelben Kasten die Fehlermeldung
für createBufferStrategy. Für getBufferStrategy sieht die Fehlermeldung gleich aus.

In meiner Testklasse, bei der alles Funktioniert, habe ich absolut die gleichen Aufbau.

Was könnte für dieses Problem ursächlich sein?
 

lam_tr

Top Contributor
Hallo,

in meiner Klasse ChessInOut benötige ich für das Ziehen der Figuren auch "BufferStrategy".

In einer sehr schmalen Testklasse funktioniert das Ziehen der Figuren mit Einsatz von "BufferStrategy"
problemlos. In der Klasse "ChessInOut", die Teil des Gesamtprogramms ist, klappt es dagegen nicht.
"BufferStrategy" wird hier nicht. Die beiden Aufrufe "createBufferStrategy(2);" und "getBufferStrategy();"
werden nicht gefunden.

Hier ein Bild vom Klassenrumpf nur mit den Initialisierungsvorkommen von"createBufferStrategy(2);"
und "getBufferStrategy();":

Anhang anzeigen 13324
Rechts unten ist ein Screeshot vom Original unter NetBeans. Im gelben Kasten die Fehlermeldung
für createBufferStrategy. Für getBufferStrategy sieht die Fehlermeldung gleich aus.

In meiner Testklasse, bei der alles Funktioniert, habe ich absolut die gleichen Aufbau.

Was könnte für dieses Problem ursächlich sein?
Das sind noch nicht implementierten Methoden oder? Das heißt du rufst eine Methode auf die noch gar nicht exisitert in deiner ChessInOut Klasse.
 

temi

Top Contributor
createBufferStrategy() und getBufferStrategy() werden z.B. von JFrame (also eigentlich von java.awt.Window) implementiert, nicht von JPanel.

Wie sieht denn die Testklasse aus?
 

kodela

Bekanntes Mitglied
Danke für Eure Antworten.
@temi: Dein Gedanke mit JFrame als Basis für BufferStrategy entspricht sehr meinen zwischenzeitlichen Erkenntnissen. Ich habe mal wirklich alles was möglich war aus der Klasse ChessInOut entfernt. Das sieht ähnlich dem aus, was ich zuletzt gezeigt habe. Hier der Restcode, bei dem BufferStrategy immer noch nicht gefunden wird:
Code:
package mychess;

import java.awt.image.BufferStrategy;

public class ChessInOut extends javax.swing.JPanel implements GlobaleObjekte {

    private static final long serialVersionUID = 1L;
    
    private final ChessApp cApp;
    private final ChessBoard cboard;
    
    public ChessInOut(ChessApp mfrm, ChessBoard board){
    
        cApp = mfrm;
        cboard = board;
    
        createBufferStrategy(2);
        strategy = getBufferStrategy();
        
    }
}
Die Figurenbewegung, für die ich BufferStrategy benötige findet aber definitiv nicht in der Hauptklasse sondern in ChessInOut statt. Aber dass von ChessInOut ein Zugriff auf BufferStrategy erfolgt, müsste ja zu machen sein. Mal sehen.

@lam_tr: Hier der Code für die Testklasse:
Code:
/**
 * https://www.tutorials.de/threads/swing-wie-kann-man-ein-bild-mit-der-maus-bewegen-lassen.228807/
 */

import java.awt.Cursor;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import java.util.concurrent.TimeUnit;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;

/**
 * @author Thomas, modifiziert von kodela
 *
 */
public class MoveableIconExample extends JFrame {

    static int width = 400, height = 300;
    boolean shouldIconMove;
    BufferStrategy strategy;
    BufferedImage image;
    int imageWidth;
    int imageHeight;
    Rectangle rectangle = new Rectangle(200, 150);
    Point p;
    Cursor normalCursor, imageMoveCursor;
    Thread runner = new ThreadImpl();

    // Konstruktor
    public MoveableIconExample() {
        super("MoveableIconExample");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setResizable(false);
        setSize(width, height);
        setVisible(true);

        addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                if (shouldIconMove) {
                    setCursor(Toolkit.getDefaultToolkit().
                            createCustomCursor(new ImageIcon("").
                            getImage(), new Point(0, 0), "No Cursor"));
                    shouldIconMove = true;
                } else
                shouldIconMove = false;
            }

            @Override
            public void mouseReleased(MouseEvent e) {
                p = e.getPoint();
                if (rectangle.contains(p) && shouldIconMove) {
                    setCursor(normalCursor);
                    shouldIconMove = false;
                } else {
                    shouldIconMove = true;
                    setCursor(normalCursor);
                }
            }
        });

        addMouseMotionListener(new MouseMotionAdapter() {
            @Override
            public void mouseMoved(MouseEvent e) {
                p = e.getPoint();
            }
        });

        addMouseMotionListener(new MouseMotionAdapter() {
            @Override
            public void mouseDragged(MouseEvent e) {
                shouldIconMove = true;
                p = e.getPoint();
                if (rectangle.contains(p) && shouldIconMove) {
                    setCursor(imageMoveCursor);

                } else {
                    setCursor(normalCursor);
                }
            }
        });

        createBufferStrategy(2);
        strategy = getBufferStrategy();
        runner.start();
    }

    private class ThreadImpl extends Thread {

        @Override
        public void run() {
            try {
                image = ImageIO.read(new File("src/de/tutorials/bishopw.png"));
//                image = ImageIO.read(getClass().getResource("de//tutorials/bishopw.png"));
                imageWidth = image.getWidth();
                imageHeight = image.getHeight();

                int xPos = 200;
                int yPos = 150;

                rectangle.setLocation(100, 75);

                while (true) {
                    Graphics2D g = (Graphics2D) strategy.getDrawGraphics();
                    g.clearRect(0, 0, width, height);

                    if (shouldIconMove && rectangle.contains(p)) {
                        xPos = p.x - imageWidth / 2;
                        yPos = p.y - imageHeight / 2;
                    }

                    g.drawRect(rectangle.x, rectangle.y, rectangle.width,
                            rectangle.height);
                    g.drawImage(image, xPos, yPos, null);

                    g.dispose();
                    strategy.show();
                    TimeUnit.MILLISECONDS.sleep(20L);
                }

            } catch (Exception e) {
            }
        }
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        MoveableIconExample mIE = new MoveableIconExample();
    }
}
Die von mir verwendete Figur (Läufer) ist im Anhang.
 

Anhänge

  • bishopw.png
    bishopw.png
    3,1 KB · Aufrufe: 1

temi

Top Contributor
Dein Gedanke mit JFrame als Basis für BufferStrategy entspricht sehr meinen zwischenzeitlichen Erkenntnissen.

Da braucht es nicht sehr viele Erkenntnisse dazu. Deine Klasse erweitert JPanel.
ChessInOut extends javax.swing.JPanel
Der direkte Aufruf von createBufferStrategy(2); entspricht dem Aufruf einer Methode dieser Klasse. Da weder in deiner Klasse ChessInOut, noch in JPanel diese Methode implementiert ist, kannst du sie auch nicht aufrufen. So einfach ist das.

Edit: Die Testklasse erweiter JFrame, da gibt es diese Methode und man kann sie auch aufrufen.
 

kodela

Bekanntes Mitglied
Da weder in deiner Klasse ChessInOut, noch in JPanel diese Methode implementiert ist, kannst du sie auch nicht aufrufen.
Das mit dem Aufruf ist klar. Das Problem ist ja, dass sich BufferStrategy in ChessInOut nicht implementieren lässt. Ich habe jetzt createBufferStrategy(2); in der Hauptklasse aufgerufen und dann inout.strategy = getBufferStrategy(); und damit scheint es zu funktionieren. Es wird zwar die per Mauszeiger zu bewegende Figur noch nicht gezeigt, aber dafür gibt es andere Gründe.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Z Buffer / Depth Buffer in Bufferstrategy einfügen AWT, Swing, JavaFX & SWT 1
Damtonix BufferStrategy flackert (Swing) AWT, Swing, JavaFX & SWT 9
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
P Methode wird nicht überprüft AWT, Swing, JavaFX & SWT 4
P paintComponent-Methode wird dauernd neu aufgerufen AWT, Swing, JavaFX & SWT 2
G JavaFX LineChart Datenpunkte Markierung wird abgeschnitten AWT, Swing, JavaFX & SWT 1
P JTextField wird nur sehr klein angezeigt und verändert die Größe nicht AWT, Swing, JavaFX & SWT 3
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
J Netbeans die JavaFX-Anwendung wird nicht ausgeführt AWT, Swing, JavaFX & SWT 16
N €-Zeichen wird nicht akzeptiert AWT, Swing, JavaFX & SWT 4
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
_user_q Objekt.setSelected(false), wenn es nicht mehr fokussiert wird AWT, Swing, JavaFX & SWT 2
S Javafx getResource-Pfad wird nicht erkannt AWT, Swing, JavaFX & SWT 7
U Warum wird zweimal die Affinetransformation estellt (2Dgraphics, Java)? AWT, Swing, JavaFX & SWT 31
DonBronson Gezeichnetes Objekt verschwindet nachdem erneut gezeichnet wird AWT, Swing, JavaFX & SWT 8
ProggersWorld JavaFX TextArea BackgroundImage wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
M Bild wird nicht geladen obwohl sie gefunden wird AWT, Swing, JavaFX & SWT 0
M Nach Export als Runnable Jar wird css nicht merh gefunden AWT, Swing, JavaFX & SWT 22
izoards Outlook Mail erstellen - Signatur wird nicht angezeigt. AWT, Swing, JavaFX & SWT 3
J actionperformed wird nicht aufgerufen/ repaint() AWT, Swing, JavaFX & SWT 6
J Swing Komponente wird unpassend angepasst in der Größe AWT, Swing, JavaFX & SWT 35
J Java FX NullPointerException, ObservableList wird in View nicht angezeigt.. AWT, Swing, JavaFX & SWT 34
S Next_Button wird nicht ausgeführt. AWT, Swing, JavaFX & SWT 6
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
CptK windowClosed() nur aufrufen, wenn Fenster nicht über Button geschlossen wird AWT, Swing, JavaFX & SWT 1
J Komponente wird manchmal falsch gezeichnet AWT, Swing, JavaFX & SWT 0
J Swing JList wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
JMölleri Swing Image wird unscharf dargestellt AWT, Swing, JavaFX & SWT 2
JojoSand Java Programm wird nicht gestartet - keinen Fehlerhinweis AWT, Swing, JavaFX & SWT 9
R Text vom Jlabel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
D JavaFX Bearbeitetes Bild wird nicht gespeichert AWT, Swing, JavaFX & SWT 9
J setOnCloseRequest wird nicht ausgelöst AWT, Swing, JavaFX & SWT 3
P JavaFX Fenster wird nicht angezeigt (Mac) AWT, Swing, JavaFX & SWT 13
B JavaFX Bei Scenen-Wechsel im primaryStage wird aktuelle Fenstergröße nicht mit übernommen AWT, Swing, JavaFX & SWT 16
B JavaFX Warum wird hier eine NullPointer-Exception geworfen? AWT, Swing, JavaFX & SWT 7
M JavaFX javaFX Label-Text wird nicht gesetzt AWT, Swing, JavaFX & SWT 3
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
L Swing JLabel wird beim ändern der Schriftart immer neu gezeichnet. AWT, Swing, JavaFX & SWT 2
R Layout Manager null und Component wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 3
Zrebna JavaFX-Projekt mit Bildern funktioniert nicht - um Hilfe wird gebeten AWT, Swing, JavaFX & SWT 14
J JPanel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
S ImageView wird dem Gridpane nicht zugefügt AWT, Swing, JavaFX & SWT 1
G Repaint wird nicht durchgeführt AWT, Swing, JavaFX & SWT 8
E Warum wird Text im JTextArea erst am Programmende angezeigt ? AWT, Swing, JavaFX & SWT 1
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
M Swing GUI wird nach invokeLater() langsam AWT, Swing, JavaFX & SWT 19
Bluedaishi TableView mit Combox wert wird nicht in die TableView gesetzt AWT, Swing, JavaFX & SWT 38
L JFrame wird zu klein erstellt AWT, Swing, JavaFX & SWT 7
T JavaFX Nach Zoomen wird an falscher Stelle gezeichnet AWT, Swing, JavaFX & SWT 0
kodela Swing Letzte Änderung in der Tabelle wird nicht gespeichert AWT, Swing, JavaFX & SWT 5
cool_brivk24 AWT BufferedImage wird nicht geladen AWT, Swing, JavaFX & SWT 17
S JavaFX Wird es überhaupt genutzt? AWT, Swing, JavaFX & SWT 3
FRI3ND GUI wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
J Canvas wird nicht angezeigt AWT, Swing, JavaFX & SWT 10
K Swing JScrollPane wird nicht angezeigt wenn man Components darstellt. AWT, Swing, JavaFX & SWT 2
ralfb1105 Swing Wert in JTextField wird falsch ausgegeben AWT, Swing, JavaFX & SWT 2
B JavaFX Text wird nicht angezeigt, kein Fehler AWT, Swing, JavaFX & SWT 2
J Aus welchen Grund wird der Button nicht angezeigt im GridPane? AWT, Swing, JavaFX & SWT 1
J MouseListener wird nicht ausgeführt. AWT, Swing, JavaFX & SWT 4
E Swing Liste in Scrollpane wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
J Controller wird zu groß, was tun ? AWT, Swing, JavaFX & SWT 5
CptK Wieso wird nur ein Teil meiner Buttons angezeigt? AWT, Swing, JavaFX & SWT 1
T Label wird nicht angezeigt AWT, Swing, JavaFX & SWT 4
M Aktion ausführen wenn ein JRadiobutton deselektiert wird. AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing JPanel "ContentPane" wird nicht gesetzt/angezeigt AWT, Swing, JavaFX & SWT 16
I JavaFX Fenster wird auf einem anderen Rechner anders dargestellt AWT, Swing, JavaFX & SWT 5
zhermann FX Label text wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 12
zhermann TableView wird nicht gefüllt AWT, Swing, JavaFX & SWT 14
it_is_all Warum wird die JTable im JDialog nicht angezeigt? AWT, Swing, JavaFX & SWT 1
zhermann JavaFX Main App wird nicht geöffnet AWT, Swing, JavaFX & SWT 6
Naxon89 JavaFX Image wird nicht korrekt geladen AWT, Swing, JavaFX & SWT 3
4 Swing JLabel wird ,,abgehackt" AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing Größe des JPanel ändern/wird nicht geändert. AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing JPanel wird in JScollPane nicht angezeigt AWT, Swing, JavaFX & SWT 2
D JFrame wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 1
P Kein Bild wird angezeigt bei ImageIcon AWT, Swing, JavaFX & SWT 16
MaxG. JavaFX Inhalt in Tableview wird nicht angezeigt AWT, Swing, JavaFX & SWT 11
T JButton wird beim vergrößern des Fensters erst sichtbar AWT, Swing, JavaFX & SWT 4
A Swing Tabelle wird bei Betätigung des Button nicht befüllt AWT, Swing, JavaFX & SWT 17
krgewb 2D-Grafik paint-Methode wird zu oft ausgeführt AWT, Swing, JavaFX & SWT 5
G Nur ein JPanel wird angezeigt AWT, Swing, JavaFX & SWT 9
M Swing Inhalt meines JTables wird falsch dargestellt AWT, Swing, JavaFX & SWT 8
T Default Table wird nicht angezeigt AWT, Swing, JavaFX & SWT 15
H Musik wird nach dem erstellen der .jar Datei nicht mehr abgespielt AWT, Swing, JavaFX & SWT 1
K JavaFX Stage wird nicht angezeigt AWT, Swing, JavaFX & SWT 9
B JTable wird nicht angezeigt AWT, Swing, JavaFX & SWT 1
A Swing Bild wird nicht mehr geladen AWT, Swing, JavaFX & SWT 4
U Swing Inhalt vom Fenster wird erst durch Hovern oder Klicken sichtbar AWT, Swing, JavaFX & SWT 3
D iText PDF wird nach Neustart nicht importiert AWT, Swing, JavaFX & SWT 0
Thallius Wer oder was bestimmt welches Frame toFront kommt wenn ein anderes geschlossen wird? AWT, Swing, JavaFX & SWT 8
X JavaFX AreaChart area höhe wird nicht richtig dargestellt AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben