2016-07-06 4 views
1

Я пытаюсь использовать TextField.setPrefColumnCount(), чтобы дать мне текстовые поля разного размера в GridPane. GridPane определяет все поля в самом длинном поле. Я здесь что-то не так, или мне нужно явно установить максимальный размер полей в их предпочтительный размер для всех полей?GridPane Игнорирование TextField.setPrefColumnCount

public class TestProject extends Application { 

    @Override 
    public void start(Stage primaryStage) { 

     BorderPane base = new BorderPane(); 
     GridPane inner = new GridPane(); 

     inner.setHgap(4); 
     inner.setVgap(4); 
     inner.setPadding(new Insets(8)); 
     inner.setMaxWidth(Double.MAX_VALUE); 
     inner.setGridLinesVisible(true); 
     inner.setStyle("-fx-border-color:red"); 

     Label lA = new Label("Label A"); 
     Label lB = new Label("Label B"); 
     Label lC = new Label("Label C"); 

     TextField tA = new TextField(); 
     tA.setPrefColumnCount(30); 

     TextField tB = new TextField(); 
     tB.setPrefColumnCount(15); 

     TextField tC = new TextField(); 
     tC.setPrefColumnCount(6); 

     inner.addRow(0, lA, tA); 
     inner.addRow(1, lB, tB); 
     inner.addRow(2, lC, tC); 

     base.setCenter(inner); 
     base.setPrefWidth(800); 
     base.setPrefHeight(600); 

     Scene scene = new Scene(base); 

     primaryStage.setTitle("GridPane TextField Test"); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 

    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     launch(args); 
    } 

} 

ответ

1

Вы можете установить свойство fillWidth GridPane для дочерних узлов, как это:

GridPane.setFillWidth(tA, false); 
GridPane.setFillWidth(tB, false); 
GridPane.setFillWidth(tC, false); 
+1

Оказывается, один и то же место на ColumnConstraints будет делать это слишком. Благодаря! – Geoff

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