如何将组附加到Java中的屏幕上

时间:2016-05-09 19:01:59

标签: java javafx-8 fxml fxmlloader

主要类有FXMLLoader

的以下部分
public void GeomStart() {
    try {
        FXMLLoader loader = new FXMLLoader (MYGUI.class.getResource (
                "Geom.fxml"));
        AnchorPane geomPage = (AnchorPane) loader.load ();
        rootLayout.setCenter (geomPage);
        primaryStage.setScene (rootScene);
        GeomController controller = loader.getController ();
        controller.setMainApp (this);            
        controller.setMyStage (primaryStage);
    } catch (IOException ex) {
        System.out.println (" Problem in loading geometry set");
        Logger.getLogger (MYGUI.class.getName ()).log (Level.SEVERE, null,
                ex);
    }
}

GeomController我从主要类的继承Scene继承StageFXMLController,其中包含:

public void setMainApp(MoncGUI badGUI) {
    this.myGUI = myGUI;
}

public void setMyStage(Stage stage) {
    this.geoStage = stage;
}

我在此控制器中声明了另一个函数

private void fixSetup() {
    geoStage.setTitle("Testing");
    System.out.println("fixSetup :  Height = " + geoStage.getHeight()+"  Width = "+geoStage.getWidth());
    System.out.println("Scene Height " + geoStage.getScene().getHeight()+" Width "+geoStage.getScene().getWidth());
    newScene = geoStage.getScene();

    System.out.println("Scene Height " + geoScene.getHeight()+" Width "+geoScene.getWidth());
    final Scene geoScene = new Scene(camV, drawWidth, drawHeight, true);
    geoScene.setFill(new RadialGradient(225, 0.85, centerX, centerY,
            drawWidth, false,
            CycleMethod.NO_CYCLE, new Stop[]{new Stop(0f, Color.BLUE),
                new Stop(1f, Color.LIGHTBLUE)}));
    buildCamera(geoScene);
    Context3D context = Context3D.getInstance(camV);
    lightSetting(context);
    axis = buildAxes();
    camV.add(axis);
}

FXMLController启动

行动
@FXML
void doShapeCyl(ActionEvent event) {
    if (initialized == 0) {
        System.out.println("Processing initialized=0");
        fixSetup();
        initialized = 1;
    }
    drawCylSolid();
}

最后有一个函数

void complete() {
    camV.frameCam(geoStage, geoScene);
    MouseHandler mouseHandler = new MouseHandler(geoScene, camV);
    KeyHandler keyHandler = new KeyHandler(geoStage, geoScene, camV);
    geoStage.setScene(geoScene);
    geoStage.show();
}

可能有许多函数,如drawCylSolid(),如drawSphSolid(),drawDiscSolid(),drawTube()等。我喜欢关联像

这样的组
CameraViewer camV

到场景并定义宽度和高度,使作业等效于

final Scene geoScene = new Scene(camV, drawWidth, drawHeight, true);

虽然我希望避免使用“new Scene”定义,因为它只是本函数的本地定义,并且最终无法用于FXML启动的函数或函数complete()

0 个答案:

没有答案