如何在javafx中添加现有场景?

时间:2014-05-26 22:46:33

标签: java javafx shape scene

我想在我的场景中添加更多javafx对象,但我不确定如何。我试过查找但我找不到任何东西。

package application;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;


public class Main extends Application {
    public void start(Stage primaryStage) {
        try {
            Parent root = FXMLLoader.load(getClass().getResource("/fxml/Main.fxml"));
            Scene scene = new Scene(root,600,400);
            // how would i add something here or further on?
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            primaryStage.setResizable(false);
            primaryStage.setScene(scene);
            primaryStage.setTitle("Test");
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}

例如,我如何为此添加多边形?

2 个答案:

答案 0 :(得分:2)

您不能将它们添加到场景中,而是添加到场景的父节点。您必须将Parent更改为您在FXML文件中使用的任何类型的节点。 netbeans中的默认值是AnchorPane,这是我使用的。

public void start(Stage primaryStage) throws Exception {
    try {
        AnchorPane root = FXMLLoader.load(getClass().getResource("fxml/Main.fxml"));
        Scene scene = new Scene(root, 600, 400);
        //how would i add something here or further on?
        root.getChildren().add(new Polygon(10,20,30,10,20,30));
        scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
        primaryStage.setResizable(false);
        primaryStage.setScene(scene);
        primaryStage.setTitle("Test");
        primaryStage.show();
    } catch (Exception e) {
        e.printStackTrace();
      // don't leave me hanging bro!
        Platform.exit();
    }
}

答案 1 :(得分:-1)

我会完全推荐一种不同的方法。如果您使用的是NetBeans IDE,则可以下载名为SceneBuilder的工具。此应用程序允许您构建和编辑简单或复杂的JavaFX应用程序。

随着您的应用程序变得越来越复杂,使用像SceneBuilder这样的工具更有意义。我使用SceneBuilder在不到一个小时的时间内创建了一个相当复杂的客户端GUI。使用NetBeans和SceneBuilder(以及我喜欢Eclipse的人!),JavaFX的生活更容易。