Java Programmfehler aber wo?

Ich wollte Snake programmieren, aber bei mir malt es nicht die Vierecke, die der Schlange sein soll. Dort ist nur der Hintergrund. Ich kann dort kein Fehler erkennen. Bitte sagt es mir ,falls ihr den Fehler findet, und wie ich es korrigieren kann. Ich danke im Voraus.

import javax.swing.JFrame;

public class Snake extends JFrame{

private Schlange schlange = new Schlange(313, 313);

public static void main(String[] args) {
    
    JFrame frame = new Snake();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(650, 650);
    frame.setLocationRelativeTo(null);
    frame.getContentPane().setBackground(Color.WHITE);

// frame.setResizable(false); frame.setVisible(true);

}

public Snake(){
    
    schlange.getSnakeArray().add(schlange);
    schlange.getSnakeArray().add(schlange);
    
    setFocusable(true);
    addKeyListener(this);
}

public void paint(Graphics g){
    
    schlange.paint(g);
    
}



import java.awt.Color;

import java.awt.Graphics; import java.util.ArrayList;

public class Schlange {

private ArrayList<Schlange> snake = new ArrayList<Schlange>();

private int Size = 20;
private float posX;
private float posY;


public Schlange(float posY, float posX) {
    
    for(int i = 0; i < snake.size(); i++){
        this.snake.get(i).posX = posX - (snake.size() - 1) * Size;
        this.snake.get(i).posY = posY;
    }
    
}

public void paint(Graphics g){
    
    g.setColor(Color.GREEN);
    
    for(int i = 0; i < snake.size(); i++){
        g.fillRect((int)snake.get(i).posX, (int)snake.get(i).posY, Size, Size);
    }
}

public ArrayList<Schlange> getSnakeArray() {
    return snake;
}

}

...zum Beitrag

Vielleicht solltest du lieber auf einem JPanel zeichnen.

Erstelle eine neue Klasse die von JPanel erbt und überschreibe dann die paintComponent-Methode.

Vergiss dabei nicht innerhalb der Methode als erstes super.paintComponent aufzurufen.

...zur Antwort
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
executor.scheduleAtFixedRate(() -> {
try (Stream<String> stream = Files.lines(Paths.get("test.txt"))) {
stream.forEach(System.out::println);
} catch(IOException ioe) {}
}, 0, 3, TimeUnit.SECONDS);

So zum Beispiel. Hier wird die Datei alle drei Sekunden ausgelesen und der Inhalt Zeile für Zeile ausgegeben.

...zur Antwort

http://pastebin.com/E6ePaWFU

Ist zwar keine schöne Lösung, aber funktioniert. Ich bin allgemein sowieso kein Fan von Swing, vielleicht wird dir ja noch jemand antworten, der mehr Ahnung davon hat als ich :).

...zur Antwort

Strg+H um das Suchfenster zu öffnen.

Klicke dann auf den "File Search" Tab.

Klicke auf der rechten Seite "Regular expression" an.

Containing text: ^.*$

Und bei "File name patterns" gibst du dann *.java an.

Zum Schluss auf Search klicken. Die angezeigten Matches sind dann die Anzahl an Zeilen.

...zur Antwort

Benutzt du Swing? JavaFX? Irgendein anderes Framework??

Was hast du bisher versucht? Wo ist dein Quellcode??

...zur Antwort