自定义按钮定位

时间:2017-02-03 17:45:46

标签: java javafx

我决定使用Shapes创建自定义按钮,这些按钮是动画的。所以我按照教程进行了设置,并且设置正常,直到我向场景中添加了一些其他项目。我看到我在这些私有类上使用的定位方法显示正确,但在幕后,Button有另一个具有我在按钮类中设置的绝对值的实例。

为了澄清这种情况,它的外观如下:

ToggleSwitch i build是一个Rectangle中的Circle,一旦点击就会移动并改变它的背景颜色

这就是它的反应:

enter image description here

意思是,它阻止了上面的按钮

我使用了以下代码段:

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中,而不是让“另一个实例”阻止我的应用程序。

这一定是问题所在,因为从场景中删除它之后一切正常。

1 个答案:

答案 0 :(得分:0)

问题不在于按钮的创建,而在于我将它们添加到窗格的方式。 由于我只使用普通的Pane对象作为根窗格来切换内容,所以它都被卡在了位置(0,0)。

解决方案:将BorderPane用作根窗格。