Установите ширину TextField в JavaFX

Как я могу установить ширину TextField в JavaFX?

TextField userTextField = new TextField();

Я пробовал это:

TextField userTextField = new TextField();
userTextField.setPrefWidth(80);

Но я не вижу никаких изменений.


person Peter Penzov    schedule 07.11.2013    source источник
comment
это зависит от менеджера компоновки. Попробуйте также установить setMinWidth/setMaxWidth   -  person Sergey Grinev    schedule 08.11.2013


Ответы (3)


Работает довольно хорошо:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.stage.Stage;

public class TextFieldWidthApp extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        TextField userTextField = new TextField();
        userTextField.setPrefWidth(800);
        primaryStage.setScene(new Scene(userTextField));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }

}
person Jens Piegsa    schedule 07.11.2013

Просто установите эти методы после создания TextField:

TextField myTf = new TextField();
myTf.setPrefWidth(80);
myTf.setMaxWidth(80);
person edilon Junior    schedule 02.05.2019
comment
Пожалуйста, не забудьте добавить объяснение к вашему ответу. Это поможет будущим читателям понять, что вы предлагаете. - person Dessus; 02.05.2019
comment
Для тех, кому интересно, вы можете просто сделать TextField tf = new TextField(); tf.setMaxWidth(80); без необходимости устанавливать предпочтительную ширину - person rodude123; 20.06.2019

У меня была та же проблема (вот как я попал на эту страницу), и я исправил ее, поместив текстовое поле в HBox. Проблема может возникнуть, если текстовое поле просто помещено в один родительский компонент, где родственные элементы являются менеджерами компоновки. Например, поместив его в GridLayout рядом с VBox или HBox или дочерним элементом GridLayout. Вот код, который это сделал;

HBox hbForTextField = new HBox();
TextField sample = new TextField();
sample.setAlignment(Pos.CENTER);//Align text to center
sample.setPrefWidth(120);//Set width

//Add the texfield to the HBox
hbForTextField.getChildren().addAll(generatedPassword);

Затем вы можете добавить HBox в корневой или другой родительский менеджер компоновки.

person xwaxes    schedule 01.05.2019