我正在创建一个程序,您可以在其中布置堆栈窗格中的形状,并通过单击并拖动形状来移动它们。可以从文件中保存和加载这些形状配置。我也希望能够随意调整窗口大小。这就是出现问题的地方。
我尝试了许多解决方案来保持形状。位置不变,同时使保存和加载配置变得简单。最有效的方法是做一些魔术来绑定堆栈窗格的比例,使其填充其父级,而不是绑定其高度和宽度属性。
这使得堆叠窗格中的形状在堆叠窗格内并且保持其位置不变,这正是我想要的。但是,在每个形状中都有一个我用作按钮的图像视图,它可以锁定"形状,因此它不能被鼠标拖动和移动。这个图像视图也可以在堆叠窗格缩放时进行缩放,这是我不想要的。
简而言之,因为我的堆栈窗口内容在扩展时会缩放,所以我会相信当一个区域缩放时,它的所有子项及其子项也会缩放。我正在寻找一种方法来防止这种影响。
我尝试使用 setManaged(false),并将imageview放在带有 pane.setScaleShape(false)的容器窗格中,但都没有用。 setScaleShape(boolean)看起来像我想要使用的,但我无法弄清楚如何让它工作。任何有关如何正确使用它的帮助,或者对此问题的其他解决方案将不胜感激。
答案 0 :(得分:0)
您的主要错误是将您的形状直接放入StackPane。 StackPane是一个布局窗格,它以特定的方式定位子项,但您想要的是绝对定位。因此,最简单的解决方案是将一个简单的Pane放入StackPane,然后将形状添加到此窗格中。窗格不进行任何布局并保留您指定的位置。