JavaFX - MeshViews 在屏幕上不可见
JavaFX - MeshViews not visible on screen
我正在尝试添加一个组,其中包含几个从文件中读取的 MeshViews 到 borderlayout 的中心。我正在使用 FXML 文件来定义布局。我给了中心 AnchorPane 一个 fx:id "centerPane" 和包含 MeshViews 的组 fx:id "centerGroup"。我没有收到任何错误,但屏幕中央窗格中没有显示任何内容。当我第一次开始手动创建一个网格视图时,我正在做类似的事情,它会出现在中心窗格中(但后来我使用了 borderpane 对象的 setCenter 方法(我还为其分配了一个 fx:id 名称这样我就可以从控制器代码中访问它。我将包括 fxml 部分和下面直接涉及的控制器的行。如果有人能帮我弄清楚如何让网格视图出现,我将非常感谢你的帮助。我已经阅读了大部分 JavaFX 书籍,但出于某种原因仍在为此苦苦挣扎。谢谢。
来自 FXML 文件:
<center>
<VBox prefHeight="400.0" prefWidth="640.0">
<children>
<AnchorPane fx:id="centerPane" maxHeight="-1.0" maxWidth="-1.0"
prefHeight="-1.0" prefWidth="-1.0" VBox.vgrow="ALWAYS">
<children>
<Group fx:id="centerGroup" />
</children>
</AnchorPane>
</children>
</VBox>
</center>
来自控制器文件的行:
@FXML
private AnchorPane centerPane;
@FXML
private Group centerGroup;
(inside of a for loop I add the meshviews from an array list into the group)
for( - ; - ; - ){
centerGroup.getChildren().add(meshViews[i]);
}
PerspectiveCamera camera = new PerspectiveCamera(false);
PointLight redLight = new PointLight();
redLight.setColor(Color.RED);
PointLight greenLight = new PointLight();
greenLight.setColor(Color.GREEN);
( I have tried all three below. middle one gave duplicate child error. )
//borderPane.setCenter(centerGroup);
//centerPane.getChildren().addAll(centerGroup, redLight, greenLight);
centerPane.getChildren().addAll(redLight, greenLight);
我相信这些代码足以描绘出我要修复的问题。我将附上一张图形用户界面的图片,以显示当代码运行并且我打印输出到控制台时,从文件中读取的网格视图的数量是正确的,屏幕上没有任何显示。感谢您的帮助。
你需要在舞台上添加相机
yourStage.setCamera(camera);
在您的组中添加相机
centerPane.getChildren().add(camera);
我正在尝试添加一个组,其中包含几个从文件中读取的 MeshViews 到 borderlayout 的中心。我正在使用 FXML 文件来定义布局。我给了中心 AnchorPane 一个 fx:id "centerPane" 和包含 MeshViews 的组 fx:id "centerGroup"。我没有收到任何错误,但屏幕中央窗格中没有显示任何内容。当我第一次开始手动创建一个网格视图时,我正在做类似的事情,它会出现在中心窗格中(但后来我使用了 borderpane 对象的 setCenter 方法(我还为其分配了一个 fx:id 名称这样我就可以从控制器代码中访问它。我将包括 fxml 部分和下面直接涉及的控制器的行。如果有人能帮我弄清楚如何让网格视图出现,我将非常感谢你的帮助。我已经阅读了大部分 JavaFX 书籍,但出于某种原因仍在为此苦苦挣扎。谢谢。
来自 FXML 文件:
<center>
<VBox prefHeight="400.0" prefWidth="640.0">
<children>
<AnchorPane fx:id="centerPane" maxHeight="-1.0" maxWidth="-1.0"
prefHeight="-1.0" prefWidth="-1.0" VBox.vgrow="ALWAYS">
<children>
<Group fx:id="centerGroup" />
</children>
</AnchorPane>
</children>
</VBox>
</center>
来自控制器文件的行:
@FXML
private AnchorPane centerPane;
@FXML
private Group centerGroup;
(inside of a for loop I add the meshviews from an array list into the group)
for( - ; - ; - ){
centerGroup.getChildren().add(meshViews[i]);
}
PerspectiveCamera camera = new PerspectiveCamera(false);
PointLight redLight = new PointLight();
redLight.setColor(Color.RED);
PointLight greenLight = new PointLight();
greenLight.setColor(Color.GREEN);
( I have tried all three below. middle one gave duplicate child error. )
//borderPane.setCenter(centerGroup);
//centerPane.getChildren().addAll(centerGroup, redLight, greenLight);
centerPane.getChildren().addAll(redLight, greenLight);
我相信这些代码足以描绘出我要修复的问题。我将附上一张图形用户界面的图片,以显示当代码运行并且我打印输出到控制台时,从文件中读取的网格视图的数量是正确的,屏幕上没有任何显示。感谢您的帮助。
你需要在舞台上添加相机
yourStage.setCamera(camera);
在您的组中添加相机
centerPane.getChildren().add(camera);