我决定使用Shapes创建自定义按钮,这些按钮是动画的。所以我按照教程进行了设置,并且设置正常,直到我向场景中添加了一些其他项目。我看到我在这些私有类上使用的定位方法显示正确,但在幕后,Button有另一个具有我在按钮类中设置的绝对值的实例。
为了澄清这种情况,它的外观如下:
ToggleSwitch i build是一个Rectangle中的Circle,一旦点击就会移动并改变它的背景颜色
这就是它的反应:
意思是,它阻止了上面的按钮
我使用了以下代码段:
private static class ToggleSwitch extends Parent {
...
public BooleanProperty switchedOnProperty() {
return switchedOn;
}
public ToggleSwitch() {
Rectangle background = new Rectangle(102, 52);
background.setArcWidth(50);
background.setArcHeight(50);
background.setFill(Color.WHITE);
background.setStroke(Color.LIGHTGRAY);
Circle trigger = new Circle(25);
trigger.setFill(Color.WHITE);
trigger.setStroke(Color.LIGHTGRAY);
// These two lines are my problem!!
trigger.setCenterX(26);
trigger.setCenterY(26);
...
}
}
所以我不知道如何设置Circle的位置,使其在Rectangle中,而不是让“另一个实例”阻止我的应用程序。
这一定是问题所在,因为从场景中删除它之后一切正常。
答案 0 :(得分:0)
问题不在于按钮的创建,而在于我将它们添加到窗格的方式。 由于我只使用普通的Pane对象作为根窗格来切换内容,所以它都被卡在了位置(0,0)。
解决方案:将BorderPane用作根窗格。