2017-05-17 14 views
1

次のコードを使用してグリッドパネルに2つのボタンを作成すると、サイズが違う2つのボタンが表示されます。どうすればこの問題を解決できますか?不等号サイズのボタンJavaFX

/** 
* Set the appearance of buttons in the grid 
*/ 
private void setButtonAppearance(Button button) 
{ 
    button.setAlignment(Pos.CENTER); 
    //button.setFont(font); 
    button.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE); 
    button.setMinSize(Double.MIN_VALUE, Double.MIN_VALUE); 
    // doesn't start with focus or stay focused 
    button.setFocusTraversable(false); 
} 

/** 
* Create buttons to perform allocation and deallocation of events to venues 
*/ 
private void addButtons() 
{ 
    allocateButton = new Button("Allocate Event"); 
    deallocateButton = new Button("Deallocate Event"); 

    //Set appearance of buttons 
    setButtonAppearance(allocateButton); 
    setButtonAppearance(deallocateButton); 

    gridPane.add(allocateButton, 5, 30, 10, 1); 
    gridPane.add(deallocateButton, columns-15, 30, 10, 1); 
} 

OUTPUT: enter image description here

よろしく!

+0

...代わりシーンBuilderとFXMLを活用し、手でJavaFXのレイアウトをコーディングに対してお勧めしますプレフィックス幅? –

答えて

1

あり二つの可能な解決策があり、いずれかのボタン

private void setButtonAppearance(Button button) { 
    button.setPrefWidth(60); 
} 

またはボタンが両方にで発生列が同じ制約が設定するための好ましい幅を設定します。このようなもの。デフォルトでは、getColumnConstraints()配列にColumnConstraintオブジェクトはありません。

gridPane.getColumnConstraints() 
     .add(new ColumnConstraints(10, 100, Double.MAX_VALUE, Priority.ALWAYS, HPos.CENTER, true)); 
gridPane.getColumnConstraints() 
     .add(new ColumnConstraints(10, 100, Double.MAX_VALUE, Priority.ALWAYS, HPos.CENTER, true)); 

自己を例に

@Override 
public void start(Stage primaryStage) throws Exception { 
    Button allocateButton = new Button("Allocate Event"); 
    Button deallocateButton = new Button("Deallocate Event"); 

    setButtonAppearance(allocateButton); 
    setButtonAppearance(deallocateButton); 

    GridPane gridPane = new GridPane(); 
    gridPane.add(allocateButton, 0, 0, 1, 1); 
    gridPane.add(deallocateButton, 2, 0, 1, 1); 
    gridPane.getColumnConstraints() 
      .add(new ColumnConstraints(10, 100, Double.MAX_VALUE, Priority.ALWAYS, HPos.CENTER, true)); 
    gridPane.getColumnConstraints() 
      .add(new ColumnConstraints(10, 100, Double.MAX_VALUE, Priority.ALWAYS, HPos.CENTER, true)); 
    gridPane.getColumnConstraints() 
      .add(new ColumnConstraints(10, 100, Double.MAX_VALUE, Priority.ALWAYS, HPos.CENTER, true)); 

    primaryStage.setScene(new Scene(gridPane)); 
    primaryStage.show(); 
} 

private void setButtonAppearance(Button button) { 
    button.setAlignment(Pos.CENTER); 
    // button.setFont(font); 
    button.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE); 
    button.setMinSize(Double.MIN_VALUE, Double.MIN_VALUE); 
    // doesn't start with focus or stay focused 
    button.setFocusTraversable(false); 
} 

いずれかの方法を含んで、私は使用しない理由

関連する問題