我有一些可视化的元素,它们有可以相互连接的端口。元素的端口是表示元素的javafx窗格的子元素。我现在想知道什么是将连接线的起点和终点绑定到端口位置的最佳方法,因为端口可能位于元素层次结构的相当深的位置。这就是为什么我认为我可能需要这些端口的绝对位置,但没有找到一个简单的方法来获得它们。现在,这些线就在场景根的正下方。
很难说没有看到代码的结构。但我在使用javafx编写的uml建模工具时遇到了类似的问题,所以我的解决方案可能会对您有所帮助。
所以在你的情况下,我会这样做:
>
实现端口
,使其X和Y位置具有DoubleProperty
,现在取决于其外观实现可能不同,在我的示例中,我使用了圆
及其中心属性
和中心属性
,如果使用某个矩形形状创建自己的centerXProperty
和centerYProperty
,则通过绑定到layoutX
(width
/2)可以非常容易地计算它们,y也可以使用高度。它应该是这样的:
DoubleProperty centerXProperty=new SimpleDoubleProperty(0);
centerXProperty.bind(n.layoutXProperty(). add(n.width属性().分隔(2));
如果n
是场景图上的某个节点,您也可以使用prefWidthProperty
,以防您使用自定义的宽度/高度
您的窗格应该有所有端口的列表,现在取决于您希望如何创建此端口
s,它可能有所不同,但在我的项目中,我将在用户绘制的线
与其连接的窗格
的交点上创建端口
,您还可以在每个窗格上放置预定义的
端口
,并且仅当行
endpoint在端口
半径内时才进行连接。
行已具有
endXProperty
和endYProperty
,因此您可以简单地将它们绑定到端口的位置属性,这样您就可以轻松地将它们移动到一起。
如果你需要代码示例,那么你需要提供你到目前为止得到的,这样我就可以帮助你。
编辑
关于父子关系,我们对图根的解决方案是扩展锚定窗格,因为他将大部分控制权交给了它的子节点,这个锚定窗格上的每个节点都必须是
umlement
,它进一步向下扩展到UmlNode
和UmlEdge
,然后UmlNode
有子类型ParentUmlNode
和ChildUmlNode
,Child
可以放在Parent
内部,其位置绑定到Parent
位置,它不关心外部,因为一旦Parent
移动他的孩子就分别跟随他。
IMHO这比基于视图的根处理深度子位置要好得多,因为保持所有内容同步可能会有一些问题,特别是如果添加了调整大小、多选和类似的更复杂的功能。
我目前有一个GridPane作为布局的根,我有另一个GridPane里面包含2个标签。我试图让这些标签中的一个左对齐,另一个右对齐。 我尝试使用GridPane.halignment="右",但这对标签没有影响。 我的布局代码如下: 如何按照我想要的方式对齐这些标签?GridPane对我想做的事情来说是理想的吗?我对JavaFX相当缺乏经验,但对Android的布局管理器很熟悉。
问题内容: 我不知道如何初始化嵌套结构。在此处找到示例:http: //play.golang.org/p/NL6VXdHrjh 问题答案: 好吧,有什么特定的原因不使Proxy成为自己的结构? 无论如何,您有2个选择: 正确的方法是,只需将proxy移至其自己的结构,例如: 不太正确和丑陋的方法,但仍然有效:
如何使用JavaFX TableView实现嵌套的行(而不是列)?还是在TableView中合并行?
问题内容: http://play.golang.org/p/f6ilWnWTjm 我正在尝试解码以下字符串,但仅获取空值。 如何在Go中解码嵌套的JSON结构? 我想将以下内容转换为地图数据结构。 问题答案: 在Go中使用嵌套结构来匹配JSON中的嵌套结构。 这是一个如何处理示例JSON的示例: 游乐场链接 您还可以对内部结构使用匿名类型: 游乐场链接 或外部和内部结构: 游乐场链接 如果您不知
问题内容: 我有一个json作为 我想将我的结构编组到json之上并创建如下结构- 我在初始化上述结构时遇到麻烦。我不确定如何以以下方式初始化匿名结构: 我通过为页面信息创建一个单独的结构并将其与父结构附加在一起来解决此问题。但是,必须有某种方法来执行 匿名 嵌套结构的初始化,就像我对上面的 Fields (字符串切片)所做的一样。谁能将我重定向到一些指南来做到这一点? 问题答案: 这可行,但是很
问题内容: 您如何初始化以下结构? 我试过了: 没用: 我试过了: 没用: 问题答案: 您是一个具有匿名结构类型的字段。因此,您必须重复类型定义: 但在大多数情况下,最好将其定义为rob74建议的单独类型。