要实现只接受小写字母和数字,并将它们放在单独的TextFields中,可以按照以下步骤进行:
以下是一个示例代码,演示了如何实现上述功能:
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import java.util.regex.Pattern;
public class Main extends Application {
private static final Pattern VALID_PATTERN = Pattern.compile("[a-z0-9]*");
@Override
public void start(Stage primaryStage) {
GridPane gridPane = new GridPane();
gridPane.setPadding(new Insets(10));
gridPane.setHgap(10);
TextField lowercaseTextField = new TextField();
TextField digitTextField = new TextField();
lowercaseTextField.setPromptText("Only lowercase letters");
digitTextField.setPromptText("Only digits");
lowercaseTextField.textProperty().addListener((observable, oldValue, newValue) -> {
if (!isValidInput(newValue)) {
lowercaseTextField.setText(oldValue);
}
});
digitTextField.textProperty().addListener((observable, oldValue, newValue) -> {
if (!isValidInput(newValue)) {
digitTextField.setText(oldValue);
}
});
gridPane.add(lowercaseTextField, 0, 0);
gridPane.add(digitTextField, 0, 1);
Scene scene = new Scene(gridPane, 200, 100);
primaryStage.setScene(scene);
primaryStage.show();
}
private boolean isValidInput(String input) {
return VALID_PATTERN.matcher(input).matches();
}
public static void main(String[] args) {
launch(args);
}
}
在上述示例代码中,我们创建了两个TextField,分别用于接收小写字母和数字。通过添加文本变化监听器,我们可以在用户输入时进行过滤。isValidInput()方法使用正则表达式来检查用户输入的字符是否为小写字母或数字。如果不符合要求,我们将文本框的值重置为旧值,以确保只接受符合要求的字符。
这只是一个简单的示例,你可以根据实际需求进行扩展和优化。
领取专属 10元无门槛券
手把手带您无忧上云