Tenho um GridPane onde rótulos e campos de texto alternam (rótulo, campo de texto, rótulo, campo de texto). Os rótulos podem ter qualquer largura e nunca são conhecidos com antecedência. Preciso garantir que os rótulos estejam sempre totalmente visíveis, o que significa que não são truncados (...), e apenas os TextFields encolhem. Este é meu código:
public class NewMain extends Application {
@Override
public void start(Stage stage) {
GridPane gridPane = new GridPane();
gridPane.setHgap(10);
gridPane.setVgap(10);
gridPane.setPadding(new Insets(10));
Label label1 = new Label("Label AAAAA BBBBB:");
label1.setMinWidth(Region.USE_COMPUTED_SIZE);
TextField textField1 = new TextField();
textField1.setMinWidth(10);
GridPane.setHgrow(textField1, Priority.ALWAYS);
Label label2 = new Label("Label CCCCCC DDDDDD:");
label2.setMinWidth(Region.USE_COMPUTED_SIZE);
TextField textField2 = new TextField();
GridPane.setHgrow(textField2, Priority.ALWAYS);
textField2.setMinWidth(10);
gridPane.add(label1, 0, 0);
gridPane.add(textField1, 1, 0);
gridPane.add(label2, 2, 0);
gridPane.add(textField2, 3, 0);
ColumnConstraints labelColumn = new ColumnConstraints();
labelColumn.setHgrow(Priority.NEVER);
ColumnConstraints textFieldColumn = new ColumnConstraints();
textFieldColumn.setMinWidth(50);
textFieldColumn.setHgrow(Priority.ALWAYS);
gridPane.getColumnConstraints().addAll(
labelColumn, textFieldColumn,
labelColumn, textFieldColumn
);
Scene scene = new Scene(gridPane, 600, 100);
stage.setTitle("GridPane Single Row Test");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
E este é o resultado:
Alguém poderia dizer como fazer isso?
O tamanho computado para um rótulo leva em conta o fato de que ele pode ser truncado. O tamanho preferido lhe dará o tamanho que ele "quer ser", e ele preferiria não ser truncado. Basta definir a largura mínima para
Region.USE_PREF_SIZE
: