【发布时间】:2017-11-16 22:47:12
【问题描述】:
好吧,长话短说,我正在尝试创建一种聊天/消息系统,需要一点帮助。我正在尝试在我的容器上创建一个箭头,如下图所示。图像是从 ControlsFX 和它们的 PopOver 窗口中取出的。我不能使用他们的弹出窗口小部件,因为它的行为与我使用它的目的有点不符。
我继续创建了我自己的小聊天窗口弹出窗口,它将自己定位在我定义的父对象上,但我真的希望它有一个指向该对象的箭头。箭头也总是面朝下,应该在弹出窗口的左下角。
还应该注意,弹出窗口不是一个窗口,它是一个简单的 VBox,其中填充了文本行。如果需要,我当然可以将其包装在窗格中。谁能想出正确的方法来创建这个箭头?我的 VBox 背景也作为渐变,因此箭头不能像通过 getChildren().add 与“相同颜色”一样放在底部,因为这样渐变就会关闭。它必须(以某种方式)成为容器的一部分。
================================================ ============================== 编辑:
好的,所以我今天大部分时间都在学习 SVG 路径,这并不太复杂,但有点乏味。我最终选择的路径是:
"M30 0 h100 a6,6 0 0,1 6,6 v50 a6,6 0 0,1 -6,6 h-88 L38 68 L34 62 h-4 a6,6 0
0,1 -6,-6 v-50 a6,6 0 0,1 6,-6 z"
现在唯一的问题是箭头尾部的高度随着窗格的大小而增长。例如,如果我在框中有很多文本,则窗格的高度会增加(当然)并且箭头也会变长。这种行为并不是一个彻底的交易破坏者,但它并不是我真正想要的。我希望路径中的大写 Ls 确保箭头的点无论如何都保持不变,但它不起作用。对此有什么想法吗?
【问题讨论】:
-
你试过
StackPane有类似这样的背景图片吗? -
我没有测试过这个,但它可能值得一看:github.com/Elltz/ChatBubble/tree/master/ChatBubbleLib/Src/…
-
你发现菲利普了吗?我的目标是类似的结果
-
@JawnyThompson 如果您正在谈论获取面板本身,那么是的。我最终使用的 SVG 路径就在“编辑”部分的下方。至于尾巴随着盒子的高度而增长,答案是NO。不太确定如何解决这个问题,因为此弹出窗口实际上是针对游戏的,并且文本框可以是任意高度(由显示的文本量决定)。由于倾斜,这个高度略微移动了箭头,但不管我想什么。
-
@JawnyThompson 我自己写了那个 SVG 路径,它把箭头放在弹出窗口的左下角。
标签: java javafx javafx-8 javafx-2 javafx-css