JavaFX:如何获取网格窗格中的列和行索引?

大卫·金

单击时,我尝试获取gridpane的行/列索引。

我正在寻找像JTable(java swing)中的getSelectedColumn()之类的方法

我搜索了这个。gridPane.getRowIndex(node)

但这对我没有帮助。因为它需要节点名称才能获得行/列索引。

我为语法制作了网格的一部分。因此,节点名称相同。我如何获得价值?我的部分代码如下。

for (int i = 0; i < imageName.length; i++) {
   try {
      img = new Image(getClass().getResourceAsStream(imageName[i]));   
   } catch (Exception e) {
      System.out.println("exception : " + e);
   }
      ImageView imageview = new ImageView(img);
      imageview.setFitWidth(40);
      imageview.setFitHeight(40);

      HBox hbox= new HBox();
      hbox.getChildren().add(imageview);
      tile1.setHgap(40);
      tile1.setVgap(40);
      tile1.add(hbox, i+2, 0);
}
罗兰

这是一个有关如何在网格窗格上只需要鼠标侦听器而不在单元格上的节点上侦听鼠标的方法的示例。为简单起见,我将Label用作单元节点,但是您可以使用任何您喜欢的东西。

public class Demo extends Application {
    public static void main(String[] args) {
        Application.launch(args);
    }

    @Override
    public void start(final Stage primaryStage) {

        Pane root = new Pane();

        GridPane gridPane = new GridPane();
        gridPane.setGridLinesVisible(true);

        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {

                Label label = new Label("Label " + i + "/" + j);
                label.setMouseTransparent(true);
                GridPane.setRowIndex(label, i);
                GridPane.setColumnIndex(label, j);

                gridPane.getChildren().add(label);
            }
        }

        root.getChildren().add( gridPane);

        Scene scene = new Scene(root, 400, 300, Color.WHITE);
        primaryStage.setScene(scene);

        primaryStage.show();

        gridPane.addEventFilter(MouseEvent.MOUSE_PRESSED, new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent e) {

                for( Node node: gridPane.getChildren()) {

                    if( node instanceof Label) {
                        if( node.getBoundsInParent().contains(e.getSceneX(),  e.getSceneY())) {
                            System.out.println( "Node: " + node + " at " + GridPane.getRowIndex( node) + "/" + GridPane.getColumnIndex( node));
                        }
                    }
                }
            }
        });

    }

}

您会在控制台中看到单击的单元格信息。

如果将侦听器放在单元节点上而不是在网格窗格上(此处为lambda表达式),则同样会起作用:

        label.addEventFilter(MouseEvent.MOUSE_PRESSED, event -> System.out.println( "Node: " + label + " at " + GridPane.getRowIndex( label) + "/" + GridPane.getColumnIndex( label)));

但是请注意,只有在事先设置数据(如这些方法的文档中所指定)的情况下,getRowIndexgetColumnIndex方法才起作用。

我没有您打算实现的目标的任何信息,但是我个人更喜欢使用节点本身,而不是布局管理器中可能会更改的一些索引。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JavaFX:如何获取网格窗格中的列和行索引?

来自分类Dev

我如何获取按钮来填充javafx网格窗格?

来自分类Dev

如何在网格窗格(javaFX)中获取信息

来自分类Dev

如何在javafx中手动跨过网格窗格的列?

来自分类Dev

如何在javafx中手动跨过网格窗格的列?

来自分类Dev

在JavaFX中触摸滚动网格窗格

来自分类Dev

如何限制javafx垂直流窗格中的列数

来自分类Dev

如何在datagridView中获取行索引和列索引

来自分类Dev

JavaFX:自定义网格窗格中按钮的宽度

来自分类Dev

JavaFX标签内容未显示在网格窗格中

来自分类Dev

如何刷新javafx中的窗格

来自分类Dev

Javafx网格窗格布局分配

来自分类Dev

Javafx网格窗格宽度设置

来自分类Dev

Javafx 网格窗格中心元素

来自分类Dev

如何获取UWP Grid控件的单元格行和列索引?

来自分类Dev

从LibreOffice Calc中的单元格名称获取行和列索引

来自分类Dev

VBA 获取单击以在 Excel 2016 中打开用户框的单元格的行和列索引

来自分类Dev

如何动态分配网格行和列索引

来自分类Dev

将画布和窗格与JavaFX中的Line对象集成

来自分类Dev

扩展JavaFX中的窗格

来自分类Dev

如何在javafx中更改窗格的颜色?

来自分类Dev

JavaFX-如何在锚定窗格中添加容器

来自分类Dev

如何在Javafx中的窗格上将标签居中

来自分类Dev

JavaFX-如何在锚定窗格中添加容器

来自分类Dev

获取 AngularJS 光网格中的行索引

来自分类Dev

JavaFX:使用FXML将控件组织成行(在网格窗格中)

来自分类Dev

JavaFX 在 VBox-es 的网格窗格中创建单选按钮行为

来自分类Dev

javafx将按钮添加到网格窗格

来自分类Dev

javafx将按钮添加到网格窗格

Related 相关文章

热门标签

归档