当前位置: 首页 > 知识库问答 >
问题:

我无法在JavaFx中实用地自定义GridPane

法子昂
2023-03-14

我正在做一个连接到documentum数据存储的JavaFx项目。我需要从数据存储中检索一些数据,插入并以表格形式组织它们,我使用的是网格。由于数据因对象而异,我必须使代码动态,并使用编程GUI设计。好吧,在数据获取和上传到GridPane中没有问题。但是,我在设计该GridPan的界面时遇到了一些问题。我在FXML文件中创建了一个名为“aclInfo”的GridPanes,并试图在其中创建新的GridPane。下面是我编写的代码:

public void test ( ){
    aclInfo.getChildren().clear();

try{


    for (int i = 0 ; i <= listOfAcls.size() - 1 ; i ++ ){

        GridPane mainGridPane = new GridPane();

        mainGridPane.setStyle("-fx-grid-lines-visible: true");
        //mainGridPane.setStyle("-fx-background-color :red");


        RowConstraints row0 = new RowConstraints();
        RowConstraints row1 = new RowConstraints();
        row0.setMinHeight(20);
        row1.setMinHeight(32);

        mainGridPane.getRowConstraints().addAll(row0 , row1);


        ColumnConstraints mianCol0 = new ColumnConstraints();



        mianCol0.setMinWidth(911);


        mainGridPane.getColumnConstraints().addAll(mianCol0 );


        GridPane title = new GridPane ();
        ColumnConstraints col0 = new ColumnConstraints();
        ColumnConstraints col1 = new ColumnConstraints();
        ColumnConstraints col2 = new ColumnConstraints();
        col0.setMinWidth(303.66);
        col1.setMinWidth(303.66);
        col2.setMinWidth(303.66);
        title.getColumnConstraints().addAll(col0 , col1 , col2);


        //title.setStyle("-fx-grid-lines-visible: true");

        GridPane desc = new GridPane();
        RowConstraints descrow0 = new RowConstraints();
        RowConstraints descrow1 = new RowConstraints();
        descrow0.setMinHeight(20);
        descrow0.setMinHeight(22);

        desc.getRowConstraints().addAll(descrow0 , descrow1);


        ColumnConstraints desccol0 = new ColumnConstraints();
        ColumnConstraints desccol1 = new ColumnConstraints();
        ColumnConstraints desccol2 = new ColumnConstraints();
        desccol0.setMinWidth(303.66);
        desccol1.setMinWidth(303.66);
        desccol2.setMinWidth(303.66);

        desc.getColumnConstraints().addAll( desccol0, desccol1,desccol2);
        //desc.setStyle("-fx-background-color :red");
        desc.setStyle("-fx-grid-lines-visible: true");


        Text aclName = new Text(listOfAcls.get(0));
        Text roid = new Text ("r_object_id");
        Text rap = new Text ("r_accessor_permit");
        Text ran = new Text ("r_accessor_name");
        Text roidValue = new Text (holding.get(i).r_object_id);
        Text rapValue = new Text (holding.get(i).r_accessor_permit);
        Text ranValue = new Text (holding.get(i).r_accessor_name);





        title.add(aclName, 1, 0);
        title.setHalignment(aclName, HPos.CENTER);
        desc.add(roid , 0 , 0 );
        desc.setHalignment(roid, HPos.CENTER);
        desc.add(ran , 1 , 0 );
        desc.add(rap , 2 , 0 );
        desc.add(roidValue, 0 , 1);
        desc.add(rapValue, 1 , 1);
        desc.add(ranValue, 2 , 1);

        mainGridPane.add(title, 0, 0);
        mainGridPane.add(desc, 0, 1);
        aclInfo.add(mainGridPane, 0 , i);


    }




}catch(Exception e){
    Alert alert = new Alert (Alert.AlertType.ERROR , e.getLocalizedMessage());
    alert.showAndWait();
}

}
}

我无法将我的文本在网格中居中。

任何想法我在哪里犯错误:)

共有2个答案

暴阳州
2023-03-14

好吧,这里是最终工作代码的样子:

   public void test ( ){
    aclInfo.getChildren().clear();

try{


    for (int i = 0 ; i <= listOfAcls.size() - 1 ; i ++ ){

        GridPane mainGridPane = new GridPane();

        mainGridPane.setStyle("-fx-grid-lines-visible: true");
        //mainGridPane.setStyle("-fx-background-color :red");


        RowConstraints row0 = new RowConstraints();
        RowConstraints row1 = new RowConstraints();
        row0.setMinHeight(20);
        row1.setMinHeight(32);

        mainGridPane.getRowConstraints().addAll(row0 , row1);


        ColumnConstraints mianCol0 = new ColumnConstraints();



        mianCol0.setMinWidth(911);


        mainGridPane.getColumnConstraints().addAll(mianCol0 );


        GridPane title = new GridPane ();
        ColumnConstraints col0 = new ColumnConstraints();
        ColumnConstraints col1 = new ColumnConstraints();
        ColumnConstraints col2 = new ColumnConstraints();
        col0.setMinWidth(303.66);
        col1.setMinWidth(303.66);
        col2.setMinWidth(303.66);
        title.getColumnConstraints().addAll(col0 , col1 , col2);



        GridPane desc = new GridPane();
        RowConstraints descrow0 = new RowConstraints();
        RowConstraints descrow1 = new RowConstraints();
        descrow0.setMinHeight(20);
        descrow0.setMinHeight(22);

        desc.getRowConstraints().addAll(descrow0 , descrow1);


        ColumnConstraints desccol0 = new ColumnConstraints();
        ColumnConstraints desccol1 = new ColumnConstraints();
        ColumnConstraints desccol2 = new ColumnConstraints();
        desccol0.setMinWidth(303.66);
        desccol1.setMinWidth(303.66);
        desccol2.setMinWidth(303.66);

        desc.getColumnConstraints().addAll( desccol0, desccol1,desccol2);

        desc.setStyle("-fx-grid-lines-visible: true");


        Text aclName = new Text(listOfAcls.get(0));
        Text roid = new Text ("r_object_id");
        Text rap = new Text ("r_accessor_permit");
        Text ran = new Text ("r_accessor_name");
        Text roidValue = new Text (holding.get(i).r_object_id);
        Text rapValue = new Text (holding.get(i).r_accessor_permit);
        Text ranValue = new Text (holding.get(i).r_accessor_name);





        title.add(aclName, 1, 0);

        desc.add(roid , 0 , 0 );
        title.setHalignment(aclName, HPos.CENTER);
        desc.setHalignment(roid, HPos.CENTER);
        desc.setHalignment(ran, HPos.CENTER );
        desc.setHalignment(rap, HPos.CENTER );

        desc.setHalignment(roidValue, HPos.CENTER);
        desc.setHalignment(ranValue, HPos.CENTER );
        desc.setHalignment(rapValue, HPos.CENTER );


        desc.add(ran , 1 , 0 );
        desc.add(rap , 2 , 0 );
        desc.add(roidValue, 0 , 1);
        desc.add(rapValue, 1 , 1);
        desc.add(ranValue, 2 , 1);

        mainGridPane.add(title, 0, 0);
        mainGridPane.add(desc, 0, 1);
        aclInfo.add(mainGridPane, 0 , i);


    }




}catch(Exception e){
    Alert alert = new Alert (Alert.AlertType.ERROR , e.getLocalizedMessage());
    alert.showAndWait();
}

}
}
高峻
2023-03-14

您还可以对所有列进行对齐:

ColumnConstraints desccol0 = new ColumnConstraints();
desccol0.setHalignment(HPos.CENTER);
ColumnConstraints desccol1 = new ColumnConstraints();
desccol0.setHalignment(HPos.CENTER);
ColumnConstraints desccol2 = new ColumnConstraints();
desccol0.setHalignment(HPos.CENTER);

或行

 RowConstraints descrow1 = new RowConstraints();
 descrow1.setValignment(VPos.CENTER);

而且你的代码更少

 类似资料:
  • 问题的核心是,我不能刷新或更改一个场景的节点的内容(这里是TablesMain)从另一个类(这里是NamePriceCell)。 我正在使用主StackPane(TableMainController扩展StackPane)构建和应用程序,其中包含其他节点,其中一些节点是ListView。在一个特定的ListView(比如“readitemslistview”)中,我创建了一个自定义ListCel

  • 问题内容: 我试图将我的UserDAO注入Apache Shiro正在使用的自定义AuthorizingRealm中,但是…我得到了空值。 我究竟做错了什么? shiro.ini JpaRealm.java 我该怎么做才能使CDI了解自定义领域内的@Inject并正确注入UserDAO? 问题答案: Apache Shiro使用的默认EnvironmentLoaderListener不支持CDI。

  • 我试图找出如何使用一个与一个在,但没有运气,我已经查了,我能找到的都是不完整的教程和问题。下面是我的FXML 还有我的模特 和我不完整的 还有我的控制器 请不要告诉我找不到。我现在迷路了,我不知道在我的FXML中更新图像视图和标签的正确方法。任何人来帮助或与一个教程的链接,我可以遵循,我将不胜感激。

  • 基本上,我想知道我是否可以创建一个树并在JavaFX上自定义它...我试着去做,但到目前为止还不能用这个代码做任何事情... 我在质疑自己,这是否是正确的“技术”,可以解决我想做的事情... 我从https://docs.oracle.com/javafx/2/ui_controls/tree-view.htm#babjgggf看到了这个教程,但我对这个教程真的很困惑...我不太了解细胞工厂的机制

  • 我正在尝试创建一个自定义标签类型,该类型将包含一个“淡出”函数。这用于显示将闪烁然后隐藏的消息。 我正在使用Eclipse、SceneBuilder和Javafx。我不知道该怎么做,也不知道是否可能,但到目前为止,我已经做到了: 这显然行不通。 这是我第一次在一个文件中处理凌乱的代码(因此,我尝试将代码从版本1拉入一个新的“对象”,我可以在多个类中使用它): 如果您有任何建议或帮助,我们将不胜感激

  • 转换为fxml 我总是从javafx.fxml.loadException类型中得到错误代码:也许有比创建自定义类更好的解决方案。但我需要一个标签与自定义接口(连接)。也许另一个解决方案是创建一个只包含标签的fxml文件,并通过接口为此设置一个控制器类。 编辑: