在JavaFX或FXML中验证TextField
字符长度,可以通过以下几种方法实现:
TextFormatter
是JavaFX中的一个类,可以用来限制TextField
中输入的字符长度。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.control.TextFormatter;
import javafx.stage.Stage;
public class TextFieldLengthValidation extends Application {
@Override
public void start(Stage primaryStage) {
TextField textField = new TextField();
TextFormatter<String> textFormatter = new TextFormatter<>(change -> {
String newText = change.getControlNewText();
if (newText.length() <= 10) { // 设置最大长度为10
return change;
} else {
return null;
}
});
textField.setTextFormatter(textFormatter);
Scene scene = new Scene(textField, 300, 250);
primaryStage.setTitle("TextField Length Validation");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
可以通过监听TextField
的textProperty
来实时验证输入的字符长度。
import javafx.application.Application;
import javafx.beans.binding.Bindings;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.control.TextFormatter;
import javafx.stage.Stage;
public class TextFieldLengthValidation extends Application {
@Override
public void start(Stage primaryStage) {
TextField textField = new TextField();
StringProperty textProperty = new SimpleStringProperty(textField.getText());
textField.textProperty().bindBidirectional(textProperty);
textProperty.addListener((observable, oldValue, newValue) -> {
if (newValue.length() > 10) { // 设置最大长度为10
textField.setText(oldValue);
}
});
Scene scene = new Scene(textField, 300, 250);
primaryStage.setTitle("TextField Length Validation");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
可以在提交表单时,使用正则表达式来验证TextField
中的字符长度。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class TextFieldLengthValidation extends Application {
@Override
public void start(Stage primaryStage) {
TextField textField = new TextField();
Button submitButton = new Button("Submit");
submitButton.setOnAction(event -> {
String text = textField.getText();
if (text.length() <= 10) { // 设置最大长度为10
System.out.println("Valid input: " + text);
} else {
System.out.println("Invalid input: " + text);
}
});
VBox root = new VBox(textField, submitButton);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("TextField Length Validation");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
这些方法适用于需要在用户输入时实时验证字符长度的场景,例如:
TextFormatter
时,确保在删除操作时不会阻止删除。TextField
中的文本非常长,频繁的监听和更新可能会导致性能问题。可以考虑使用定时器来减少监听频率。通过以上方法,可以有效地验证TextField
中的字符长度,并确保用户输入符合要求。
领取专属 10元无门槛券
手把手带您无忧上云