Gluon Mobile Toggle Button Jumping

时间:2017-10-05 02:30:17

标签: javafx gluon-mobile

我正在尝试为调查页面实现Gluon Mobile切换按钮,并且在测试时,当我点击按钮时按钮会向左跳跃一点。我根本不想让它跳起来。你可以在这里看到它:

Toggle button jumping

相关代码在这里:

pg_ctl reload

在这里,我获得了转发者及其与左侧标签的关系:

StackPane getToggler() {

    ToggleButton toggleButton = new ToggleButton("Yes");
    ToggleButtonGroup toggleButtonGroup = new ToggleButtonGroup();
    toggleButtonGroup.setSelectionType(SelectionMode.SINGLE);
    toggleButtonGroup.setPadding(new Insets(10));

    toggleButton = new ToggleButton("Yes");
    toggleButton.setStyle("-fx-text-fill:steelblue;");
    toggleButton.setUserData("1");
    toggleButton.setSelected(false);
    toggleButton.selectedProperty().addListener((obv, ov, nv) -> {
        if (nv.booleanValue()) {
            toggleButtonGroup.setUserData("1");
        }
    });

    toggleButtonGroup.getToggles().add(toggleButton);

    toggleButton = new ToggleButton("No");
    toggleButton.setStyle("-fx-text-fill:steelblue;");
    toggleButton.setSelected(true);
    toggleButton.setUserData("0");
    toggleButton.setSelected(false);
    toggleButton.selectedProperty().addListener((obv, ov, nv) -> {
        if (nv.booleanValue()) {
            toggleButtonGroup.setUserData("0");
        }
    });
    toggleButtonGroup.getToggles().add(toggleButton);
    togglers.add(toggleButtonGroup);

    StackPane wrapper = new StackPane();
    wrapper.setAlignment(Pos.CENTER);
    wrapper.getChildren().add(toggleButtonGroup);

    return wrapper;
}

1 个答案:

答案 0 :(得分:2)

经过一些调试后,我发现切换按钮的最小宽度值比其前缀宽度宽。

这意味着在用户选择一个切换后,将应用最小宽度,并使用所需的最小宽度调整控件的大小,从而缩小区域。

快速修复(直到在控件中修复)可以设置切换按钮的最小宽度:

private StackPane getToggler() {

    ToggleButtonGroup toggleButtonGroup = new ToggleButtonGroup();

    ToggleButton toggleButtonYes = new ToggleButton("Yes");
    toggleButtonYes.minWidthProperty().bind(toggleButtonYes.prefWidthProperty());
    toggleButtonGroup.getToggles().add(toggleButtonYes);

    ToggleButton toggleButtonNo = new ToggleButton("No");
    toggleButtonNo.minWidthProperty().bind(toggleButtonNo.prefWidthProperty());
    toggleButtonGroup.getToggles().add(toggleButtonNo);

    ...;
}