Curahee Q
Legacy Member
Beste
Ik ben bezig met een tetris in Java te maken. Uiteraard komt daar ook paint() bij kijken. Nu kwam ik erachter dat paint echter 2 maal wordt aangeroepen. Overbodig werk lijkt mij als hij telkens alles 2x moet tekenen.
Hier wordt de panel aangemaakt waar op wordt getekend.
In main wordt hij gewoon zo aangeroepen
Als ik dus binnen paint() iets zet van System.out.println("test"); wordt dit altijd 2x afgedrukt. Ligt dit aan mijn code of is dat altijd zo?
Alvast bedankt
Ik ben bezig met een tetris in Java te maken. Uiteraard komt daar ook paint() bij kijken. Nu kwam ik erachter dat paint echter 2 maal wordt aangeroepen. Overbodig werk lijkt mij als hij telkens alles 2x moet tekenen.
Hier wordt de panel aangemaakt waar op wordt getekend.
Code:
import java.awt.*;
import javax.swing.*;
import java.util.*;
public class DrawPanel extends JPanel {
private Vector<Blok> v;
public DrawPanel(Vector<Blok> v) {
this.v = v;
}
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
for(int x=0; x<v.size(); x++) {
Blok blok = v.get(x);
Shape shape = blok.getShape();
g2.setColor(blok.getColor());
for(int i=0; i<shape.getWidth(); i++) {
for(int j=0; j<shape.getHeight(); j++) {
if(shape.get(i, j)) {
int start_x = j*10;
int start_y = x*50+i*10;
g2.fill3DRect(start_x, start_y, 10, 10, true);
}
}
}
}
}
}
In main wordt hij gewoon zo aangeroepen
Code:
import javax.swing.*;
import java.awt.*;
import java.util.*;
public class Main extends JFrame {
private ReadData rData = new ReadData();
private Vector<Blok> v = new Vector<Blok>();
public Main() {
super("JTetris");
Container content = this.getContentPane();
v = rData.read("Shapes.dat");
content.add(new DrawPanel(v));
this.setSize(500, 500);
this.setLocationRelativeTo(null);
this.setVisible(true);
}
public static void main(String[] args) {
new Main();
}
}
Als ik dus binnen paint() iets zet van System.out.println("test"); wordt dit altijd 2x afgedrukt. Ligt dit aan mijn code of is dat altijd zo?
Alvast bedankt
. Maar als ik me niet vergis heeft java een soort van paint manager, stel dat de paint erg snel na mekaar wordt opgeroepen dan gaan sommige niet uitgevoerd worden.