Liebe Java Gemeinde,
ich mache meine ersten Gehversuche in Java und kämpfe mich durch den Java Video Kurs...halb bin ich schon durch...
Das aktuelle Beispiel im Video ist mir zu komplex, ich wollte mir etwas einfacheres schreiben...und zum Teil funktioniert es super.
...aber ich bin eben Anfänger und bräuchte bitte euren Rat...
Mein Programm zeichnet Rechtecke mit Zufallsfarbe an Zufallsposition. Klappt super.
Das Fenster erscheint und alle Rechtecke erscheinen gleichzeitig.
Ich würde aber gerne sehen, wie jedes neue Rechteck einzeln dazu kommt (z.B. etwas ausgebremst mit Thread.sleep((long) ( Math.random() *500)); )
Ich vermute der Grund ist im Dunstkreis des EDT (Event Dispatch Thread) zu suchen und ich müsste "irgendwie" meinen Code, der die Rechtecke erstellt, in einen eigenen Thread packen,
dass der EDT das Zeichnen übernimmt und das Fenster nach jeder Erstellung eines Rechtecks aktualisiert wird. (Bitte verzeiht, wenn ich etwas ungenau formuliere)
Liege ich mit meiner Vermutung richtig?
Habt ihr `nen Tipp wie und wo ich da Hand anlegen muss?
...wäre super...
Vielen Dank & viele Grüße
Berg
ich mache meine ersten Gehversuche in Java und kämpfe mich durch den Java Video Kurs...halb bin ich schon durch...
Das aktuelle Beispiel im Video ist mir zu komplex, ich wollte mir etwas einfacheres schreiben...und zum Teil funktioniert es super.
...aber ich bin eben Anfänger und bräuchte bitte euren Rat...
Mein Programm zeichnet Rechtecke mit Zufallsfarbe an Zufallsposition. Klappt super.
Das Fenster erscheint und alle Rechtecke erscheinen gleichzeitig.
Ich würde aber gerne sehen, wie jedes neue Rechteck einzeln dazu kommt (z.B. etwas ausgebremst mit Thread.sleep((long) ( Math.random() *500)); )
Ich vermute der Grund ist im Dunstkreis des EDT (Event Dispatch Thread) zu suchen und ich müsste "irgendwie" meinen Code, der die Rechtecke erstellt, in einen eigenen Thread packen,
dass der EDT das Zeichnen übernimmt und das Fenster nach jeder Erstellung eines Rechtecks aktualisiert wird. (Bitte verzeiht, wenn ich etwas ungenau formuliere)
Liege ich mit meiner Vermutung richtig?
Habt ihr `nen Tipp wie und wo ich da Hand anlegen muss?
...wäre super...
Vielen Dank & viele Grüße
Berg
Java:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class RechteckDemo extends JPanel
{
@Override
protected void paintComponent(Graphics g){
super.paintComponent(g);
int pos_X1 = 0;
int pos_Y1 = 0;
int breite = 30;
int hoehe = 30;
int farbwertRot = 255;
int farbwertGelb = 0;
int farbwertBlau = 0;
int transparenzWert = 255;
for (int i = 0; i <100; i++)
{
pos_X1 = (int)(Math.random() * 400 + 1);
pos_Y1 = (int)(Math.random() * 400 + 1);
farbwertRot = (int)(Math.random() * 255 + 1);
farbwertGelb = (int)(Math.random() * 255 + 1);
farbwertBlau = (int)(Math.random() * 255 + 1);
g.setColor(new Color(farbwertRot,farbwertGelb,farbwertBlau,
transparenzWert));
g.fillRect(pos_X1,pos_Y1,breite,hoehe);
}
}
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable() { // (EDT)
@Override
public void run() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
RechteckDemo g = new RechteckDemo();
g.setPreferredSize(new Dimension(300,300));
f.add(g);
f.pack();
f.setLocation(850,250);
f.setLocation(0,0);
f.setVisible(true);
}
});
}
}