versuchen, ein Rechteck mit Farbe zu erstellen, aber Repaint-Methode ist kein Aufruf von Paint-Methode.Repaint-Methode nicht aufrufen Paint-Methode
sogar versucht, Farbe mit paintComponent zu ersetzen, aber immer noch nicht funktioniert. Was ändert sich also, damit es funktioniert? gibt es ein Problem mit dem Aufruf der Repaint-Methode im Lauf.
gibt es ein Problem mit der Instanz.
versuchen, ein Rechteck mit Farbe zu erstellen, aber Repaint-Methode ist nicht Aufruf von Paint-Methode.
sogar versucht, Farbe mit paintComponent zu ersetzen, aber immer noch nicht funktioniert. Was ändert sich also, damit es funktioniert? gibt es ein Problem mit dem Aufruf der Repaint-Methode im Lauf.
gibt es ein Problem mit der Instanz.
package src;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
public class main extends JFrame implements Runnable{
private final int Height = 480;
private final int Width = 640;
Thread gameloop;
public static main instance = null;
private main(){
JFrame frame = new JFrame();
frame.setSize(this.Width,this.Height);
frame.setVisible(true);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static main getInstance(){
if (instance == null){
instance = new main();}
return instance;
}
private void start(){
gameloop = new Thread(this);
gameloop.start();
}
@Override
public void paint(Graphics g){
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(g2d.getBackground());
g2d.fillRect(0, 0, instance.Width, instance.Height);
g2d.setColor(Color.red);
g2d.fillRect(0, 0, 50, 50);
}
@Override
public void run() {
Thread current = Thread.currentThread();
while (gameloop == current){
try{
Thread.sleep(5);
}
catch (InterruptedException e){
e.printStackTrace();
}
repaint();
}
}
public static void main(String[] args){
main.getInstance();
main.getInstance().start();
}
}
Befolgen Sie die Java-Namenskonventionen: 'ClassNames' beginnen mit Großbuchstaben,' variableNames' mit Kleinbuchstaben. Im Konstruktor Ihrer 'main' Klasse (sic!) Erstellen Sie einen ** neuen ** Rahmen. Entfernen Sie die Zeile 'JFrame frame = new JFrame()', und ändern Sie 'frame' in' this' in den folgenden Zeilen. Der Code ist immer noch schrecklich, aber .... – Marco13
Rufen Sie die Methode nicht außerhalb des EDT. –
Überschreibe 'Farbe' von Top-Level-Containern wie' JFrame' nicht, 'JFrame' enthält mindestens zwei andere Komponenten, die den Malprozess stören können – MadProgrammer