根据https://github.com/dlsc-software-consulting-gmbh/WorkbenchFX创建javafx示例:
根据https://edvin.gitbooks.io/tornadofx-guide/part2/Integration.html 在javafx程序中使用tornadofx创建的view
CustomDemo.java
import com.dlsc.workbenchfx.Workbench;
import javafx.application.Application;
import javafx.scene.PerspectiveCamera;
import javafx.scene.Scene;
import javafx.stage.Stage;
import tornadofx.FX;
public class CustomDemo extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
Workbench customWorkbench = Workbench.builder(
new CustomModule()
).build();
Scene myScene = new Scene(customWorkbench);
myScene.setCamera(new PerspectiveCamera());
primaryStage.setScene(myScene);
primaryStage.setWidth(1024);
primaryStage.setHeight(768);
FX.registerApplication(this, primaryStage);
primaryStage.show();
}
}
CustomModule.java
import JavaFX3D.Sphere3D;
import com.dlsc.workbenchfx.model.WorkbenchModule;
import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIcon;
import javafx.scene.Group;
import javafx.scene.Node;
import tornadofx.FX;
public class CustomModule extends WorkbenchModule {
public CustomModule() {
super("My first Workbench module", MaterialDesignIcon.THUMB_UP); // A name and an icon is required
}
@Override
public Node activate() {
Group gp= FX.find(Sphere3D.class).getRoot();
return gp; // return here the actual content to display
}
}
tornadofx创建的view:
Sphere3D.kt
import javafx.scene.PerspectiveCamera
import javafx.scene.input.KeyCode
import javafx.scene.input.KeyEvent
import javafx.scene.paint.Color
import javafx.scene.shape.Sphere
import tornadofx.*
class Sphere3D : View("Sphere3D") {
val sphere = Sphere(50.0)
val WIDTH = 1400
val HEIGHT = 800
val camera = PerspectiveCamera()
override val root = group {
style {
fill= Color.SILVER
}
sphere.translateXProperty().set((WIDTH / 4).toDouble())
sphere.translateYProperty().set((HEIGHT / 4).toDouble())
add(sphere)
hbox(5) {
button("far") {
action {
sphere.translateZProperty().set(sphere.translateZ + 100)
}
}
button("near") {
action {
sphere.translateZProperty().set(sphere.translateZ - 100)
}
}
}
addEventHandler(KeyEvent.KEY_PRESSED) { event ->
when (event.getCode()) {
KeyCode.W -> sphere.translateZProperty().set(sphere.translateZ + 100)
KeyCode.S -> sphere.translateZProperty().set(sphere.translateZ - 100)
}
}
}
}