Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX-使用Shape.union()后保持形状边框_Java_Javafx_Shapes - Fatal编程技术网

JavaFX-使用Shape.union()后保持形状边框

JavaFX-使用Shape.union()后保持形状边框,java,javafx,shapes,Java,Javafx,Shapes,在使用union函数后,是否有办法保持JavaFX形状上的边框/笔划?例如,下面是我的代码: Shape rect = new Rectangle(150, 150); rect.setFill(Color.WHITE); rect.setStroke(Color.BLACK); rect.setStrokeWidth(4); Line line = new Line(0, 40, 150, 40); line.setStrokeWidth(2); Shape combined = Shap

在使用union函数后,是否有办法保持JavaFX形状上的边框/笔划?例如,下面是我的代码:

Shape rect = new Rectangle(150, 150);
rect.setFill(Color.WHITE);
rect.setStroke(Color.BLACK);
rect.setStrokeWidth(4);

Line line = new Line(0, 40, 150, 40);
line.setStrokeWidth(2);

Shape combined = Shape.union(line, rect);
combined.setFill(Color.WHITE);
combined.setStroke(Color.BLACK);
pane.getChildren().add(combined);
预期输出:

实际输出:


我是否可以将这两个元素合并在一起,以便将它们拖放到一起?

您的问题是
合并了.setFill(Color.WHITE),因为它清除了以前所有的
形状
更改

试试这样的

        Line line = new Line(0, 40, 150, 40);
        Shape rect = new Rectangle(150, 150);

        Shape combined = Shape.subtract(rect,line);
        combined.setFill(Color.WHITE);
        combined.setStroke(Color.BLACK);

        rect.setFill(Color.WHITE);
        rect.setStroke(Color.BLACK);
        rect.setStrokeWidth(4);

        line.setStrokeWidth(2);
        line.setStroke(Color.BLACK);
        line.setFill(Color.BLACK);

        pane.getChildren().add(combined);
输出将是这样的

有关
shape.union、subtract、intersect
go

的详细信息,请参见!Shape.substract()而不是Shape.union()适合我。非常感谢。