矩形JavaFx更改颜色动态

矩形JavaFx更改颜色动态,javafx,Javafx,我正在实现一个用于绘制矩形的应用程序,但现在我需要帮助来更改矩形的颜色,我有以下实现: Pane root = new Pane(); int qtd = 10; NumberBinding rectsAreaSize = Bindings.min(root.heightProperty(), root.widthProperty()); Text texto = new Text("Matriz C"); texto.setUnderline(true)

我正在实现一个用于绘制矩形的应用程序,但现在我需要帮助来更改矩形的颜色,我有以下实现:

    Pane root = new Pane();
    int qtd = 10;
    NumberBinding rectsAreaSize = Bindings.min(root.heightProperty(), root.widthProperty());
    Text texto = new Text("Matriz C");
    texto.setUnderline(true);
    texto.setLayoutX(150);
    texto.setLayoutY(400);

    for (int x = 8; x < qtd + 8; x++) {
        for (int y = 8; y < qtd + 8; y++) {
            Rectangle retangulo3 = new Rectangle();
            retangulo3.setStrokeWidth(2);
            retangulo3.setStroke(Color.BLACK);

            retangulo3.xProperty().bind(rectsAreaSize.multiply(x).divide(qtd * 2.5));
            retangulo3.yProperty().bind(rectsAreaSize.multiply(y).divide(qtd * 2.5));

            retangulo3.heightProperty().bind(rectsAreaSize.divide(qtd * 2.5));
            retangulo3.widthProperty().bind(retangulo3.heightProperty());

            retangulo3.setFill(Color.GREENYELLOW);

            root.getChildren().add(retangulo3);
        }
    }


        root.getChildren().add(texto);

        Text texto1 = new Text("Matriz A");

        texto1.setUnderline(true);
        texto1.setLayoutX(1200);
        texto1.setLayoutY(200);

        for (int x = 30; x < qtd + 30; x++) {
            for (int y = 2; y < qtd + 2; y++) {
                Rectangle retangulo1 = new Rectangle();
                retangulo1.setStrokeWidth(2);
                retangulo1.setStroke(Color.BLACK);

                retangulo1.xProperty().bind(rectsAreaSize.multiply(x).divide(qtd * 2.5));
                retangulo1.yProperty().bind(rectsAreaSize.multiply(y).divide(qtd * 2.5));

            //retangulo.setHeight(10);
                //retangulo.setWidth(10);
                retangulo1.heightProperty().bind(rectsAreaSize.divide(qtd * 2.5));
                retangulo1.widthProperty().bind(retangulo1.heightProperty());

                retangulo1.setFill(Color.WHITE);

                root.getChildren().add(retangulo1);
            }
        }

        root.getChildren().add(texto1);

        Text texto2 = new Text("Matriz B");

        texto2.setUnderline(true);
        texto2.setLayoutX(1200);
        texto2.setLayoutY(500);


        for (int x = 30; x < qtd + 30; x++) {
            for (int y = 13; y < qtd + 13; y++) {

                Rectangle retangulo2 = new Rectangle();
                retangulo2.setStrokeWidth(2);
                retangulo2.setStroke(Color.BLACK);

                retangulo2.xProperty().bind(rectsAreaSize.multiply(x).divide(qtd * 2.5));
                retangulo2.yProperty().bind(rectsAreaSize.multiply(y).divide(qtd * 2.5));

            //retangulo.setHeight(10);
                //retangulo.setWidth(10);
                retangulo2.heightProperty().bind(rectsAreaSize.divide(qtd * 2.5));
                retangulo2.widthProperty().bind(retangulo2.heightProperty());

                retangulo2.setFill(Color.WHITE);
                root.getChildren().add(retangulo2);
            }
        }

        root.getChildren().add(texto2);


        palco.setScene(new Scene(root, 100, 100));
        palco.show();

    }

现在我想做一个值的叠加,像矩阵乘法一样改变我的矩形颜色,所以我在我的代码中迷失了,因为当我创建矩形时,我有很多对象的实例,在同一个窗格中,我有三个矩形的正方形,我怎么能改变x,y的颜色,就像一个数字一样?我如何用其他尺寸调整图像的大小

嗯。。关于矩形的定位逻辑,你应该计算它。如果你知道数学逻辑,你就能解决它。毕竟,我们是来处理语言本身的

关于如何将矩形从点A移动到点B,可以使用JavaFX动画库。如果您不知道,请查看了解动画。请充分利用并查看链接中提到的所有类的JavaFX文档。阅读每一篇文章以获得更好的理解

注意:如果您还是新手,或者从其他来源学习过JavaFX,那么您可以在上学到很多关于JavaFX2.x的知识。但我想你已经知道了,对吧

嗯。。关于JavaFX中的颜色动画,有一个很好的例子说明了如何在名为。您可以在下面提到JavaFX示例演示和下载的部分找到它

此外,请记住,JavaFX动画库主要用于创建动画,并允许您创建任何类型的动画。您可以为某些端点设置自己的JavaFX属性,然后按照您想要的方式设置它们的动画。在视频中演示的动画平移中,可以使用单个时间线对象来执行所有矩形的移动,以及每个矩形颜色的更改

若要调整图元的所需运动,请使用节点类中的现有layoutXY特性。不要放置任何具有translateXY特性的对象,因为这些特性用于对节点对象位置进行小的最终调整。layoutXY特性是定义固定位置的特性。定义layoutXY时,可能会在程序中使用过渡动画,精确处理节点对象的translateXY属性。这就是使用LayoutXY进行定位的原因

有了你的程序逻辑、数学和我给你的提示,我相信你可以轻松解决你的问题。如果你对某事还有疑问,请不要害羞地问。我最终的目的是帮助你


祝你的项目好运

我不太了解你的问题。。。当事件发生时,您会尝试动态更改矩形的颜色吗?也许你应该看看rgb静态类的颜色方法。您可以通过更好的控制选择所需的颜色范围。了解一点数学知识,您可以在生成矩形时计算所需的颜色。我不知道这是否正是你想要的。如果您有问题,或者这对您没有帮助,请在此处发表评论,我将尝试其他选择。您好,感谢您对我的问题的关注,我的问题是演示一个矩阵乘法,根据我发布的代码,我需要获取矩阵A x矩阵B=矩阵C,我希望输入执行时间线[0]在带有红色的矩阵A中,同时在带有红色的矩阵B列[0]中。将带有红色的矩阵C放置在[0,0]位置…并使其成为我的所有矩形,但在动画期间使用其他颜色。在我的代码中,我使用的是颜色类..xD