2017-10-05 3 views
1

調査ページ用のGluon Mobileトグルボタンを実装しようとしています。テストするとき、ボタンをクリックすると少し左にジャンプします。私はそれがまったく飛び跳ねるのを望んでいません。あなたがここでそれを見ることができます:Gluon Mobile Toggle Button Jumping

Toggle button jumping

を関連するコードここにある:私はtogglersと左にラベルとの関係を取得する場所

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; 
} 

ここにあります:

for (int i = 0; i < this.questions.length; i++) { 

     HBox row = new HBox(); 
     row.setSpacing(5); 
     row.setAlignment(Pos.CENTER_LEFT); 

     Label label = new Label(this.questions[i]); 
     label.setWrapText(true); 
     label.setPrefWidth(200); 
     label.setTextAlignment(TextAlignment.LEFT); 
     label.setFont(new Font("System", 14)); 

     StackPane wrapper = this.getToggler(); 

     Region region = new Region(); 
     HBox.setHgrow(region, Priority.ALWAYS); 
     HBox.setHgrow(label, Priority.NEVER); 

     row.getChildren().addAll(label,region,wrapper); 
     box.getChildren().add(row); 
     box.getChildren().add(new Separator()); 

    } 

答えて

2

いくつかのデバッグの後、私は、トグルボタンの最小幅の値がそのprefの幅よりも広いことに気付きました。

これは、ユーザーが1つのトグルを選択した後、最小幅が適用され、必要な最小幅でコントロールがリサイズされ、結果として領域が縮小されることを意味します。完全に働いた

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); 

    ...; 
} 

+0

クイックフィックス(これは、コントロールで修正されるまでは)あなたのトグルボタンの最小幅を設定することができます。ありがとう。 –

関連する問題