在 JavaFX 2.0 中将标签置于节点的中心

发布于 2024-12-09 19:52:08 字数 207 浏览 0 评论 0原文

我希望能够显示一个带有以节点为中心的特定标签的节点 - 例如。例如,圆形或矩形节点,标签位于中心。这看起来应该是微不足道的,我确信它是微不足道的,但网络上相对稀疏的文档/教程意味着我似乎找不到答案!

目前,我可以在节点上显示标签,没有问题(默认情况下,标签的左上角从中心开始,这不是我想要的)或设置标签显示在节点的右侧(通过为特定节点设置标签)但不要将其放置在中间!有人能解释一下吗?

I'd like to be able to display a node with a particular label centred on the node - eg. a circle or rectangle node for instance with the label in the centre. This seems like it should be trivial and I'm sure it is but the relatively sparse documentation / tutorials on the web mean I can't seem to find the answer!

At the moment I can display a label on a node no problem (by default it appears so the top left of the label starts in the centre which isn't what I want) or set a label to appear to the right of the node (by setting a label "for" a particular node) but not position it in the middle! Can anyone shed some light on this one?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

春庭雪 2024-12-16 19:52:08

我敢打赌您正在寻找布局以外的东西,但 StackPane 提供了这种类型的功能。

来自教程:使用布局

堆栈窗格

StackPane 布局窗格将所有节点放置在一个
堆栈中每个新节点都添加到前一个节点的顶​​部。这
布局模型提供了一种在形状或图像上叠加文本的简单方法
或者重叠常见的形状以创建复杂的形状。图1-6
显示通过在顶部堆叠问号创建的帮助图标
具有渐变背景的矩形。

在此处输入图像描述

教程中的代码

示例 1-4 创建堆栈窗格

StackPane stack = new StackPane();
Rectangle helpIcon = new Rectangle(35.0, 25.0);
helpIcon.setFill(new LinearGradient(0,0,0,1, true, CycleMethod.NO_CYCLE,
new Stop[]{
new Stop(0,Color.web("#4977A3")),
new Stop(0.5, Color.web("#B0C6DA")),
new Stop(1,Color.web("#9CB6CF")),}));
helpIcon.setStroke(Color.web("#D0E6FA"));
helpIcon.setArcHeight(3.5);
helpIcon.setArcWidth(3.5);

Text helpText = new Text("?   ");
helpText.setFont(Font.font("Amble Cn", FontWeight.BOLD, 18));
helpText.setFill(Color.WHITE);
helpText.setStroke(Color.web("#7080A0")); 

stack.getChildren().addAll(helpIcon, helpText);
stack.setAlignment(Pos.CENTER_RIGHT);     // Right-justify nodes in stack

HBox.setHgrow(stack, Priority.ALWAYS);    // Give stack any extra space
hbox.getChildren().add(stack);            // Add to HBox from Example 1-2

I'm betting your looking for something other then a layout, but the StackPane provides this type of functionality.

From the tutorial: Working with Layouts

StackPane

The StackPane layout pane places all of the nodes within a single
stack with each new node added on top of the previous node. This
layout model provides an easy way to overlay text on a shape or image
or to overlap common shapes to create a complex shape. Figure 1-6
shows a help icon that is created by stacking a question mark on top
of a rectangle with a gradient background.

enter image description here

Code from the tutorial

Example 1-4 Create a Stack Pane

StackPane stack = new StackPane();
Rectangle helpIcon = new Rectangle(35.0, 25.0);
helpIcon.setFill(new LinearGradient(0,0,0,1, true, CycleMethod.NO_CYCLE,
new Stop[]{
new Stop(0,Color.web("#4977A3")),
new Stop(0.5, Color.web("#B0C6DA")),
new Stop(1,Color.web("#9CB6CF")),}));
helpIcon.setStroke(Color.web("#D0E6FA"));
helpIcon.setArcHeight(3.5);
helpIcon.setArcWidth(3.5);

Text helpText = new Text("?   ");
helpText.setFont(Font.font("Amble Cn", FontWeight.BOLD, 18));
helpText.setFill(Color.WHITE);
helpText.setStroke(Color.web("#7080A0")); 

stack.getChildren().addAll(helpIcon, helpText);
stack.setAlignment(Pos.CENTER_RIGHT);     // Right-justify nodes in stack

HBox.setHgrow(stack, Priority.ALWAYS);    // Give stack any extra space
hbox.getChildren().add(stack);            // Add to HBox from Example 1-2
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文