代码之家  ›  专栏  ›  技术社区  ›  user3064141

javafx-屏幕上不可见的网格视图

  •  0
  • user3064141  · 技术社区  · 8 年前

    我正在尝试添加一个组,该组包含几个从文件读取到边框布局中心的网格视图。我正在使用fxml文件定义布局。我给了中心锚窗格一个fx:id“centerpane”,给了包含网格视图的组一个fx:id“center group”。我没有得到任何错误,但是中间窗格的屏幕上没有显示任何内容。我刚开始做类似的事情时,我手动创建了一个meshview,它会出现在中心窗格中(但后来我使用了borderpane对象的setcenter方法(我还为它分配了一个fx:id名称,这样我就可以从控制器代码中访问它)。我将包括fxml部分和来自下面控制器的直接相关线路。如果有人能帮我弄清楚如何使网格视图显示出来,我会非常感谢他的帮助。我读过大多数javafx的书,出于某种原因,我还是很难理解。谢谢,

    从fxml文件:

    <center>
    <vbox prefheight=“400.0”prefwidth=“640.0”>
    <儿童>
    <anchorbane fx:id=“centerpane”maxheight=“-1.0”maxwidth=“-1.0”
    prefheight=“-1.0”prefwidth=“-1.0”vbox.vgrow=“始终”>
    <儿童>
    <group fx:id=“centergroup”/>
    </children>
    </AnchorPane>
    </children>
    &vtbox & gt;
    和/中心& GT;
    < /代码> 
    
    

    来自控制器文件的行:

    fxml前的代码 私人锚窗格中心窗格; @ FXML 私有组中心组; (在for循环中,我将数组列表中的网格视图添加到组中) 对于(-;-;-){ centergroup.getchildren().add(网格视图[i]); } Perspectivecamera相机=新Perspectivecamera(假); pointlight redlight=新pointlight(); 红光.setcolor(color.red); pointlight greenlight=新pointlight(); 绿灯。设置颜色(颜色。绿色); (我已经试过下面三个了。中间一个给出了重复的子错误。) //borderpane.setcenter(中心组); //centerpane.getchildren().addall(centergroup、redlight、greenlight); centerpane.getchildren().addall(红灯、绿灯); < /代码>

    我相信这足够让我描绘出我想要修复的东西的代码了。我将附加一张图形用户界面的图片,以显示当代码运行并且我被打印到控制台时,从文件中读取的网格视图的数量和数量是正确的,屏幕上没有显示任何内容。感谢您的帮助。

    .

    从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);
    

    我相信这足够让我描绘出我想要修复的东西的代码了。我将附加一张图形用户界面的图片,以显示当代码运行并且我被打印到控制台时,从文件中读取的网格视图的数量和数量是正确的,屏幕上没有显示任何内容。谢谢你的帮助。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Giovanni Contreras    8 年前

    yourStage.setCamera(camera);
    

    centerPane.getChildren().add(camera);
    
    推荐文章