gpt4 book ai didi

java - 使用 JavaFX 和 FXML 验证用户输入

转载 作者:行者123 更新时间:2023-12-01 07:55:21 24 4
gpt4 key购买 nike

使用 JavaFX 和 FXML 我想在用户点击提交时验证用户的输入。查看 .fxml 文档,您会发现我有 2 个输入字段,一个用于邮政编码,一个用于城市名称。我正在 xml 文件中强制执行 NumberTextField.java 和 CityNameTextField.java,但是当用户点击提交时,如何确保它们不为空?

FXMLDocument.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import validatetextfieldsfxml.custom.*?>

<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<children>
<Label layoutX="173.0" layoutY="89.0" text="ZipCode" />
<Label layoutX="173.0" layoutY="118.0" text="CityName" />
<NumberTextField fx:id="zipCodeTf" layoutX="257.0" layoutY="84.0" />
<CityNameTextField fx:id="cityNameTf" layoutX="257.0" layoutY="113.0" />
<Button fx:id="btn" layoutX="217.0" layoutY="162.0" mnemonicParsing="false" text="Submit" />
</children>
</Pane>

CityNameTextField.java

package validatetextfieldsfxml.custom;

import javafx.scene.control.TextField;
public class CityNameTextField extends TextField {

public CityNameTextField(){
this.setPromptText("Enter Your CityName");
}

@Override
public void replaceText(int i, int il, String string){
if(string.matches("[a-zA-Z]") || string.isEmpty()){
super.replaceText(il, il, string);
}
}

@Override
public void replaceSelection(String string) {
super.replaceSelection(string);
}



}

NumberTextField.java

package validatetextfieldsfxml.custom;
import javafx.scene.control.TextField;

public class NumberTextField extends TextField{
public NumberTextField(){
this.setPromptText("Enter Only numbers");
}
@Override
public void replaceText(int i, int il, String string){
if(string.matches("[0-9]") || string.isEmpty() ){
super.replaceText(i, il, string);
}
}

@Override
public void replaceSelection(String string){
super.replaceSelection(string);
}
}

最佳答案

在 Controller 的initialize方法中,只需执行

btn.disableProperty().bind(zipCodeTf.textProperty().isEmpty()
.or(cityNameTf.textProperty().isEmpty()));

您还可以直接在 FXML 文件中执行此操作

  <Button fx:id="btn" text="Submit" 
disable="${ cityNameTf.text.empty || zipCodeTf.text.empty }"/>

关于java - 使用 JavaFX 和 FXML 验证用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30944323/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com