Hallo. Ich möchte eine einfache Ampel mit delays programmieren. Folgender Code spuckt zwar keine Fehler aus, aber funktionieren tut es auch nicht ...
Java:
package vorb7;
import java.awt.Shape;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
public class Grafik extends Application{
private boolean ampelAn;
private int z =0;
public static void main(String []args){
launch(args);
}
@Override
public void start(Stage pStage) throws Exception {
StackPane sp = new StackPane();
Circle circle1 = new Circle();
circle1.setRadius(100);
circle1.setFill(Color.GREY);
Circle circle2 = new Circle();
circle2.setRadius(100);
circle2.setFill(Color.GREY);
Circle circle3 = new Circle();
circle3.setRadius(100);
circle3.setFill(Color.GREY);
VBox vb = new VBox();
VBox vbt = new VBox();
Button b1 = new Button();
b1.setText("Start");
b1.setOnAction(e-> {
ampelAn = true;
circle1.setFill(Color.RED);
while(ampelAn){
switch(z){
case 0:
try{
Thread.sleep(3000);
}
catch(InterruptedException e1){
Thread.currentThread().interrupt();
}
circle2.setFill(Color.YELLOW);
z=1;
case 1:
try{
Thread.sleep(1000);
}
catch(InterruptedException e2){
Thread.currentThread().interrupt();
}
circle1.setFill(Color.GREY);
circle2.setFill(Color.GREY);
circle3.setFill(Color.GREEN);
z=2;
case 2:
circle3.setFill(Color.GREY);
z=0;
}
}
});
Button b2 = new Button();
b2.setText("Stopp");
b2.setOnAction(e-> {
ampelAn = false;
});
vbt.getChildren().addAll(b1,b2);
vbt.setAlignment(Pos.BASELINE_LEFT);
vbt.setSpacing(15);
vbt.setPadding(new Insets(10,10,10,10));
vb.getChildren().addAll(circle1,circle2,circle3);
vb.setAlignment(Pos.CENTER);
sp.getChildren().addAll(vb,vbt);
Scene scene = new Scene(sp,600,600);
pStage.setTitle("Formen");
pStage.setScene(scene);
pStage.show();
}
}