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

生成 N x N 网格

纪俊良
2023-03-14

在JavaFX应用程序中创建nxn网格最简单的方法是什么?

我寻找的唯一要求是网格的大小将始终占用相同的空间量,因此更多的正方形=更小的正方形。我可以为正方形设置颜色,并且可以将鼠标悬停在每个正方形上,并能够为每个正方形显示一些颜色。

我不会知道'N',直到程序运行并解析一些数据以计算出我需要多少个总平方,这是当我计算我可以使用的最小NxN网格时。

据我所知,我的选择是:

    < li>GridPane -使用列约束和行约束生成大小并可能添加悬停属性? < li>TableView -当鼠标悬停在每个单元格上时,可以显示更多的选项,但仍然很难只添加行和列。 < li >矩形-只需生成并绘制每个矩形,同时计算每个正方形的x和y坐标。这将使它很容易做颜色和悬停,但我看不到如何调整工作,但我可以为我的应用程序有一个特定的大小。我还必须计算最佳尺寸,使每个方块填满网格区域。

我不一定要找人编写解决方案,但如果有人处理过这个问题并知道一个好方法,我想听听。

共有1个答案

毛勇
2023-03-14

不要偏离最初的想法。当你给出的所有方法都可行时,你为什么还要寻找“无痛”的方法?这里有一个使用你的矩形。栅格制造者。SCREEN_SIZE指的是你必须拥有的屏幕大小。

   public static Pane makeGrid(int n){

    double width = GridMaker.SCREEN_SIZE/n;
    Pane p = new Pane();

    Rectangle [][] rec = new Rectangle [n][n];

    for(int i=0; i<n; i++){
        for(int j=0; j<n; j++){
            rec[i][j] = new Rectangle();
            rec[i][j].setX(i * width);
            rec[i][j].setY(j * width);
            rec[i][j].setWidth(width);
            rec[i][j].setHeight(width);
            rec[i][j].setFill(null);
            rec[i][j].setStroke(Color.BLACK);
            p.getChildren().add(rec[i][j]);

        }
    }

    return p;
}

然后,如果您希望更改颜色,只需将鼠标侦听器添加到窗格中即可。

 p.setOnMouseClicked(new EventHandler <MouseEvent> (){
        @Override
        public void handle(MouseEvent me){
            double posX = me.getX();
            double posY = me.getY();

            int colX = (int)(posX / width);
            int colY = (int) (posY / width);

            rec[colX][colY].setFill(Color.RED);
        }
    });

-编辑

2)对于Hover,你在寻找什么样的悬停效果?您可以将Hover效果添加到每个矩形上,如果您想让我向您展示如何操作,我绝对可以为您编写代码。

 类似资料:
  • 在我的Net 6 Web-API项目中,我使用了OData和Swagger(它是在项目创建时自动添加的)。 它可以开箱即用,但Swagger生成的一些URL存在问题。 这是我的OData控制器: SwaggerUI输出: 当我试图从Swagger运行通过Id获取实体的查询时,由于错误的url而失败。 由于某种原因,Swagger生成查询参数和URL,如上图所示。对于OData,URL必须是这样的(

  • 静态网页生成器工具 JS 网页生成器: Metalsmith harp JS 博客网站生成器: hubpress.io Hexo.io 网站生成器列表: staticsitegenerators.net www.staticgen.com

  • 静态网页生成器 静态网页生成器, 是使用服务器端代码编写(如: ruby, php, python, nodeJS 等...), 用静态文本数据 + 模板, 生成从服务器发送到客户端的静态 HTML 文件. 综合学习: 静态网页生成器 [read]

  • 我在WordPress中使用VisualComposer,在中,我创建了事件的自定义帖子类型,并使用GridBuilder显示事件,如即将发生的事件和过去的事件。即将到来的事件显示良好,但过去的事件显示所有post,我只需要显示过去的事件我尝试了一些方法,因为我编写了过去事件的自定义查询以与当前日期进行比较。自定义字段名: 短订单日期 自定义查询: post_类型=事件 我挣扎了一个星期,任何人都

  • 我尝试了https://spring.io/blog/2019/08/16/securing-services-with-spring-cloud-gateway示例,但我对所有的oauth部分感到困惑。

  • 本文向大家介绍什么是生成对抗网络?相关面试题,主要包含被问及什么是生成对抗网络?时的应答技巧和注意事项,需要的朋友参考一下 GAN网络有两个重要的概念,一个是generator,主要作用是生成图片,尽量使其看上去来自于训练样本,一个是discriminator,主要作用是判断输入图片是否属于训练样本,所以这就是被称为对抗的网络,举例赝品家和鉴赏家