adapun sourcenya:
package fjr.booksample;
import javafx.scene.transform.Rotate;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Orientation;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.control.Slider;
import javafx.scene.control.SliderBuilder;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.shape.RectangleBuilder;
//author fajar
public class MakeABall extends Application {
private void init(Stage primaryStage) {
final Group root = new Group();
StackPane mainPane = new StackPane();
mainPane.setMinSize(500, 500);
primaryStage.setScene(new Scene(mainPane));
Group ensembel = new Group();
double angle = 0;
for (int i = 0; i < 10; i++) {
Rectangle rect = RectangleBuilder.create().width(100).height(100)
.rotationAxis(Rotate.Y_AXIS).rotate(90).fill(getColor()[i])
.build();
Xform xform = new Xform();
xform.getChildren().add(rect);
xform.rz.setAngle(45);
xform.setTranslateX(200);
Xform xform1 = new Xform();
xform1.getChildren().add(xform);
xform1.ry.setAngle(angle);
ensembel.getChildren().add(xform1);
angle += 36;
}
ensembel.setTranslateX(200);
ensembel.setTranslateY(200);
ensembel.setRotationAxis(Rotate.Z_AXIS);
root.getChildren().add(ensembel);
final Slider slider = SliderBuilder.create()
.orientation(Orientation.VERTICAL).minWidth(50).minHeight(50)
.maxHeight(70).translateX(-230).translateY(-200).build();
slider.valueProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue arg0,
Number arg1, Number arg2) {
root.setRotationAxis(Rotate.X_AXIS);
root.setRotate(slider.getValue());
}
});
final Slider slider2 = SliderBuilder.create()
.orientation(Orientation.VERTICAL).minWidth(50).minHeight(50)
.maxHeight(70).translateX(-190).translateY(-200).build();
slider2.valueProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue arg0,
Number arg1, Number arg2) {
root.setRotationAxis(Rotate.Y_AXIS);
root.setRotate(slider2.getValue());
}
});
mainPane.getChildren().add(root);
mainPane.getChildren().addAll(slider, slider2);
primaryStage.setResizable(true);
}
Color[] getColor() {
Color[] colors = new Color[10];
colors[0] = Color.ALICEBLUE;
colors[1] = Color.RED;
colors[2] = Color.YELLOW;
colors[3] = Color.YELLOWGREEN;
colors[4] = Color.ALICEBLUE;
colors[5] = Color.AQUAMARINE;
colors[6] = Color.BISQUE;
colors[7] = Color.BLUEVIOLET;
colors[8] = Color.BROWN;
colors[9] = Color.BURLYWOOD;
return colors;
}
class Xform extends Group {
final Rotate rx = new Rotate(0, Rotate.X_AXIS);
final Rotate ry = new Rotate(0, Rotate.Y_AXIS);
final Rotate rz = new Rotate(0, Rotate.Z_AXIS);
public Xform() {
super();
getTransforms().addAll(rz, ry, rx);
}
}
@Override
public void start(Stage primaryStage) throws Exception {
init(primaryStage);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
No comments:
Post a Comment