You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaFX如何创建文字透明的填充矩形(可透视下方内容)

在JavaFX实现带透明文字的填充矩形

当然可以!在JavaFX里,你完全可以通过Shape的布尔运算来实现这种「矩形挖空文字、透过文字看底层内容」的效果,核心就是把矩形和文字形状做减法,得到一个带文字镂空的填充图形。下面我给你一步步拆解实现思路和代码:

核心思路

我们需要创建两个Shape:一个是基础的填充矩形,另一个是要镂空的文字形状。然后用Shape.subtract()方法,从矩形中「剪掉」文字的区域,最终得到的新Shape就是我们要的——矩形区域填充颜色,文字区域完全透明,能直接看到下方的内容。

具体实现步骤

1. 创建基础矩形和文字形状

首先定义好矩形的尺寸、填充色,以及要镂空的文字内容、字体和位置:

// 基础填充矩形
Rectangle rect = new Rectangle(350, 120);
rect.setFill(Color.LIGHTCORAL);

// 要镂空的文字(Text本身就是Shape的子类,可以直接参与布尔运算)
Text hollowText = new Text("SEE THROUGH");
hollowText.setFont(Font.font("Segoe UI", FontWeight.BOLD, 40));
// 调整文字在矩形内的位置(x是左偏移,y是基线位置,需要调整到垂直居中)
hollowText.setX(25);
hollowText.setY(80);

2. 执行布尔减法,生成镂空形状

用Shape.subtract()把矩形减去文字区域,得到的新Shape就是带镂空文字的矩形:

// 从矩形中减去文字,得到镂空效果的Shape
Shape hollowRectangle = Shape.subtract(rect, hollowText);
// 给镂空形状设置填充色(和原矩形一致)
hollowRectangle.setFill(Color.LIGHTCORAL);
// 可选:给矩形加边框
hollowRectangle.setStroke(Color.DARKRED);
hollowRectangle.setStrokeWidth(3);

3. 叠放底层内容,验证效果

把这个镂空形状放在你需要显示的底层内容(比如图片、表格、其他控件)上面,透过文字区域就能看到下方的内容了:

// 底层示例内容:一张图片
ImageView backgroundImage = new ImageView(new Image("sample-bg.jpg"));
backgroundImage.setFitWidth(350);
backgroundImage.setFitHeight(120);

// 用StackPane实现层叠:底层放图片,上层放镂空矩形
StackPane container = new StackPane();
container.getChildren().addAll(backgroundImage, hollowRectangle);

// 构建场景并显示
Scene scene = new Scene(container, 350, 120);
primaryStage.setTitle("Hollow Text Rectangle");
primaryStage.setScene(scene);
primaryStage.show();

注意事项

  • JavaFX 8及以上版本都支持Shape的布尔运算(subtract()、union()、intersect()),不用担心版本兼容问题。
  • 如果需要调整文字的位置或样式,直接修改Text对象的属性即可,布尔运算的结果会自动更新。
  • 这种方式生成的是单一Shape对象,渲染效率比叠加多个节点更高,适合在复杂界面中使用。

内容的提问来源于stack exchange,提问作者pseusys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:43:46