Guten Tag zusammen.
Ich bin neu hier und hoffe, dass ich hier Hilfe für mein Problem finde. Für meine Ausbildung zum staatlich geprüften Techniker für Elektrotechnik muss ich in Java ein Bootrennen programmieren. Wenn man auf den Start Button drückt, sollen sich Boote mit verschiedenen, zufälligen Geschwindigkeiten über den Bildschirm bewegen. Momentan probiere ich dies mit Textfeldern, später möchte ich noch Bilder implementieren. Mein Problem ist nun, dass ich die Boote zwar provisorisch über einen Button weiter klicken kann, jedoch funktioniert das ganze nicht automatisch.
Ich habe eine for Schleife erstellt, die mit meinen Wert der X Achse meiner GUI immer um einen Zufallswert weiter schieben soll. Hier der Quelltext.
Bis jetzt passiert aber nur, dass wenn ich auf "Start" drücke, das Programm für 160*17ms "einfriert" und meine Felder nach dieser Zeit am Ende meiner "Rennstrecke sind". Ich brauche aber das jeder einzelne Schritt angezeigt wird, sprich das Boot zum Ziel schwimmt.
Meine Fragen sind nun, bin ich mit der Funktion "Thread.sleep" auf dem richtigen Weg? Brauch ich die Funktion "repaint" um dies zu realisieren und wenn ja, wie schreibe ich diese richtig in mein Programm?
Ich hoffe ihr könnt mir weiter helfen, weil von diesem Fach hängt momentan mein Weiterkommen in der Weiterbildung ab.
Mit freundlichen Grüßen
René
Ich bin neu hier und hoffe, dass ich hier Hilfe für mein Problem finde. Für meine Ausbildung zum staatlich geprüften Techniker für Elektrotechnik muss ich in Java ein Bootrennen programmieren. Wenn man auf den Start Button drückt, sollen sich Boote mit verschiedenen, zufälligen Geschwindigkeiten über den Bildschirm bewegen. Momentan probiere ich dies mit Textfeldern, später möchte ich noch Bilder implementieren. Mein Problem ist nun, dass ich die Boote zwar provisorisch über einen Button weiter klicken kann, jedoch funktioniert das ganze nicht automatisch.
Ich habe eine for Schleife erstellt, die mit meinen Wert der X Achse meiner GUI immer um einen Zufallswert weiter schieben soll. Hier der Quelltext.
Java:
JButton btnStart = new JButton("Start");
btnStart.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
for (int i = 0; i < 160; i++) {
Speed1 = Speed1 + (int)Math.round(Math.random()*10);
tFBoot1.setBounds(Speed1, 225, 80, 20);
Speed2 = Speed2 +(int)Math.round(Math.random()*10);
tFBoot2.setBounds(Speed2, 256, 80, 20);
Speed3 = Speed3 +(int)Math.round(Math.random()*10);
tFBoot3.setBounds(Speed3, 287, 80, 20);
Speed4 = Speed4 +(int)Math.round(Math.random()*10);
tFBoot4.setBounds(Speed4, 318, 80, 20);
Speed5 = Speed5 +(int)Math.round(Math.random()*10);
tFBoot5.setBounds(Speed5, 349, 80, 20);
repaint();
try {
Thread.sleep(17);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
btnStart.setBackground(UIManager.getColor("Table.selectionBackground"));
btnStart.setForeground(Color.BLACK);
btnStart.setBounds(78, 547, 120, 50);
contentPane.add(btnStart);
Bis jetzt passiert aber nur, dass wenn ich auf "Start" drücke, das Programm für 160*17ms "einfriert" und meine Felder nach dieser Zeit am Ende meiner "Rennstrecke sind". Ich brauche aber das jeder einzelne Schritt angezeigt wird, sprich das Boot zum Ziel schwimmt.
Meine Fragen sind nun, bin ich mit der Funktion "Thread.sleep" auf dem richtigen Weg? Brauch ich die Funktion "repaint" um dies zu realisieren und wenn ja, wie schreibe ich diese richtig in mein Programm?
Ich hoffe ihr könnt mir weiter helfen, weil von diesem Fach hängt momentan mein Weiterkommen in der Weiterbildung ab.
Mit freundlichen Grüßen
René