我想在我的场景中添加更多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);
}
}
例如,我如何为此添加多边形?
答案 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的生活更容易。