Hallo,
wenn ich die Methode testSwap(3,4) aufrufe, werden die Rechtecke brav auf die neue Länge gesetzt. Tue ich das ganze in einer Schleife, so läuft erst die gesamte Schleife durch.
Ursprünglich war meine Idee, ein Array von Rechtecken zu zeichnen, diese zu mixen und anschließend mit unterschiedlichen Sortierverfahren zu sortieren. Hierfür möchte ich gerne nach jedem Schritt unterbrechen können - deshalb der Scanner.
|
wenn ich die Methode testSwap(3,4) aufrufe, werden die Rechtecke brav auf die neue Länge gesetzt. Tue ich das ganze in einer Schleife, so läuft erst die gesamte Schleife durch.
Ursprünglich war meine Idee, ein Array von Rechtecken zu zeichnen, diese zu mixen und anschließend mit unterschiedlichen Sortierverfahren zu sortieren. Hierfür möchte ich gerne nach jedem Schritt unterbrechen können - deshalb der Scanner.
|
Java:
import java.util.Scanner;
import javafx.application.Application;
import java.util.Random;
import javafx.util.Duration;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.*;
import javafx.scene.paint.*;
import javafx.scene.effect.*; //Blur
import javafx.scene.layout.GridPane;
import javafx.scene.shape.*; // Rectangle und Circle
import javafx.animation.*; // TimeLine und KeyFrame
import javafx.stage.Stage;
import javafx.geometry.VPos;
import javafx.geometry.Insets;
import java.util.Date; // for sleep function
public class LinesFX extends Application{
int [] werte;
public Rectangle[] rect;
private Scanner s;
GridPane gridPane = new GridPane();
//Stage primaryStage;
private int factor = 20;
public LinesFX(int [] pWerte) {
werte = pWerte;
rect = new Rectangle[werte.length];
start(new Stage());
s = new Scanner(System.in);
}
public LinesFX() {
werte = new int[]{1,3,4,6,7,11,14,2,5,8,9,10,12,13,15};
rect = new Rectangle[werte.length];
s = new Scanner(System.in);
start(new Stage());
}
@Override
public void start(Stage primaryStage) //throws Exception
{
for (int i=0; i < werte.length; i++) {
rect[i] = new Rectangle(10+factor*i, 10, 20, factor*werte[i]);
rect[i].setArcWidth(5);
rect[i].setArcHeight(5);
rect[i].setStrokeWidth(2);
rect[i].setStroke(Color.BLUE);
rect[i].setFill(Color.DODGERBLUE);
//rect[i].setEffect(new Lighting());
GridPane.setConstraints(rect[i],i,0); //Set row and column
GridPane.setValignment(rect[i], VPos.TOP);
}
gridPane.setPadding(new Insets(10,10,10,10));
gridPane.setHgap(10);
gridPane.getChildren().addAll(rect);
primaryStage.setScene(new Scene(gridPane, factor*werte.length*2, factor*werte.length*1.5));
primaryStage.setTitle(this.getClass().getSimpleName()); // set window title
primaryStage.show();
}
@Override public void stop() {
}
public void testSwap(int index1, int index2) {
double helper = rect[index1].getHeight();
rect[index1].setHeight(rect[index2].getHeight());
rect[index2].setHeight(helper);
}
public void mixen() {
int index1, index2;
for (int i = 0 ; i < werte.length*1; i++) {
index1 = (int)(Math.random()*(werte.length));
index2 = (int)(Math.random()*(werte.length));
testSwap(index1,index2);
s.next();
}
}
//...
public static void main(String args[]){
launch(args);
}
}