Hallo!
Ich bin gerade dabei Java zu lernen und hätte mal eine Frage an euch:
Ich habe ein Programm in dem ein 2Dimensionales Array erstellt wird, dann zufällig mit 0 oder 1 gefüllt wird und schließlich ausgegeben werden soll (in Form eines Schabrettmusters).
Klappt soweit auch gut, nur hätte ich jetzt gerne eine Schleife immer wieder neue Zufallswerte reinschreibt und das ganze neu zeichnen.
Ich bilde mir ein das ich das auch richtig umgesetzt hab, nur das aufrufen von repaint() funktioniert nicht :?
Hier mal mein Code:
Das Ergebnis des ganzen ist das er alles macht was ich will, nur irgendwie funktioniert repaint() nicht!
Kann man das ganze überhaupt so machen?? Wo liegt der Fehler?
Bin echt für jede Hilfe dankbar...wie gesagt, bin ein absoluter Java Anfänger!
Vielen Dank![/code]
Ich bin gerade dabei Java zu lernen und hätte mal eine Frage an euch:
Ich habe ein Programm in dem ein 2Dimensionales Array erstellt wird, dann zufällig mit 0 oder 1 gefüllt wird und schließlich ausgegeben werden soll (in Form eines Schabrettmusters).
Klappt soweit auch gut, nur hätte ich jetzt gerne eine Schleife immer wieder neue Zufallswerte reinschreibt und das ganze neu zeichnen.
Ich bilde mir ein das ich das auch richtig umgesetzt hab, nur das aufrufen von repaint() funktioniert nicht :?
Hier mal mein Code:
Code:
public class Main {
public static void main(String[] args) {
int[][] cellArray = new int[12][12]; // Array mit Zellen
JFrame frm = new JFrame(); // Neues Fenster
frm.setSize(300,300);
frm.add(new Draw(cellArray));
frm.setVisible(true);
for (int i=0;1<5;i++){
Rnd RandomCells = new Rnd(); // Rnd füllt Array zufällig
cellArray = RandomCells.setzeZufaellig(); // CellArray ist jetzt mit neuen Zufallswerten gefüllt
Draw drw = new Draw(cellArray);
drw.NeuZeichnen(); // Hier wird die Methode Neuzeichnen der Klasse Draw aufgerufen
try {Thread.sleep(1000);} // 1 Sekunde Pause
catch (InterruptedException e){}
}
}
}
public class Rnd {
int[][] Rnd = new int[12][12]; //2D-Array wird initialisiert
Random r = new Random(); // r ist Zufallsvariable
int[][] setzeZufaellig(){ // 2D Array wird mit der Methode rechne() gebildet
for(int i=1; i<11; i++){ // Array wird mit Zufallswerten gefüllt
for(int j=0; j<10; j++){
Rnd [i][j] = 1 + Math.abs(r.nextInt()) % 2 - 1;
}
}
return (Rnd); // gefülltes Array ist returnwert
}
}
public class Draw extends JPanel{
int[][] cells = new int[12][12]; // Array für Zellen
public Draw(int [][] cellArray) { // Konstruktor übergibt Werte
cells = cellArray;
}
protected void paintComponent( Graphics g )
{
super.paintComponent( g );
for(int i=1; i<11; i++){ // Wenn im Array 1 steht, volle Zelle zeichnen, sonst leere
for(int j=1; j<11; j++){
if(cells[i][j]==0)
g.drawRect(i*10+10,j*10+10,10,10);
if(cells[i][j]==1)
g.fillRect(i*10+10,j*10+10,11,11);
}
}
}
protected void NeuZeichnen() { // NeuZeichnen Methode führt repaint() durch
repaint();
}
}
Das Ergebnis des ganzen ist das er alles macht was ich will, nur irgendwie funktioniert repaint() nicht!
Kann man das ganze überhaupt so machen?? Wo liegt der Fehler?
Bin echt für jede Hilfe dankbar...wie gesagt, bin ein absoluter Java Anfänger!
Vielen Dank![/code]
Code: