2016-05-11 2 views
0

enter image description hereКак я могу изменить свои кнопки JavaFx, чтобы выглядеть именно так?

[2]: Ниже приведен фрагмент того, что я сделал до сих пор. Кажется, это не похоже на рисунок, который я приложил.

gp.getColumnConstraints().addAll(rc, rc1, rc2); 
      gp.setAlignment(Pos.TOP_CENTER); 
      gp.add(prev, 0, 0); 
      gp.add(search, 1, 0); 
      gp.add(next, 2, 0); 

      Button add = new Button("Add + "); 
      add.setPrefSize(75, 10); 
      add.setOnAction(new EventHandler<ActionEvent>() { 

       @Override 
       public void handle(ActionEvent arg0) { 
        if (!fNameFld.getText().toString().equals("")) { 
         Contact c = new Contact(fNameFld.getText().toString(), numF.getText().toString(), 
           emailf.getText().toString()); 
         contact.add(c); 
         i = contact.indexOf(c); 
         System.out.println(i); 
        } 
       } 
      }); 

      Button edit = new Button("Edit * "); 
      edit.setPrefSize(75, 10); 
      edit.setOnAction(new EventHandler<ActionEvent>() { 
+2

Почему вы не используете 'FXML' с' SceneBuilder'? Делает GUI в «JavaFX» таким легким ветром. – Jaims

+0

С чем конкретно вы столкнулись? Макет, стиль, шрифт, текст, ...? – hotzst

ответ

1

Я бы не использовал GridPane для этого. На самом деле, я уверен, что GridPane не может делать то, что вы хотите.

Вы можете сделать выровнен по центру HBox для каждой строки, и поместить эти строки в один VBox:

Collection<HBox> buttonRows = Arrays.asList(
    new HBox(6, previous, search, next), 
    new HBox(6, add, edit, remove), 
    new HBox(6, clear, quit)); 
buttonRows.forEach(hbox -> hbox.setAlignment(Pos.CENTER)); 

VBox buttonPane = new VBox(12); 
buttonPane.getChildren().addAll(buttonRows); 

Вы должны избавиться от всех обращений к setPrefSize. Ваши кнопки прекрасно способны определять свои размеры. Если вы хотите предоставить им большие внутренние поля, установите их свойства CSS -fx-label-padding.

Смежные вопросы