Java FX滑块动态更改网格

时间:2016-04-03 17:26:48

标签: java dynamic javafx grid slider

我创建了一个在构造函数中创建带参数的网格的类。但是,我想更改使用滑块的网格行数(或大小)。我设法创建一个滑块,将值打印到控制台。现在我想从滑块分配值来更改网格,但它不起作用。这是主要的课程。

public class Main extends Application {

@Override
public void start(Stage primaryStage) {

    Pane root = new Pane();
    final Slider sliderSize = new Slider(0, 20, 5);
    sliderSize.setShowTickMarks(true);
    sliderSize.setShowTickLabels(true);
    sliderSize.setMajorTickUnit(5);
    root.getChildren().add(sliderSize);

    sliderSize.valueProperty().addListener(new ChangeListener<Number>() {
        @Override
        public void changed(ObservableValue<? extends Number> ov,
                Number old_val, Number new_val) {
            Grid a = new Grid(root, 100, 100, 10, (int) new_val);
        }
    });

    Scene scene = new Scene(root, 500, 500);
    primaryStage.setTitle("Grid");
    primaryStage.setScene(scene);
    primaryStage.show();
}

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    launch(args);
}

}

这是Grid类。

public class Grid {

public Grid(Pane root, int xp, int yp, int width, int numberOfLines) {


    for (int j = 0; j <= numberOfLines; j++) {


        Line line = new Line();
        line.setStartX(xp);
        line.setStartY(yp + width * j);
        line.setEndX(xp + width * numberOfLines);
        line.setEndY(yp + width * j);
        line.setStroke(Color.BLACK);

        root.getChildren().add(line);

    }
    for (int j = 0; j <= numberOfLines; j++) {


        Line line = new Line();
        line.setStartX(xp + width * j);
        line.setStartY(yp);
        line.setEndX(xp + width * j);
        line.setEndY(yp + width * numberOfLines);
        line.setStroke(Color.BLACK);

        root.getChildren().add(line);

    }

}

}

0 个答案:

没有答案