Java验证(javafx)
驗證是核心javafx框架所缺少的一件事。 為了填補這一空白, controlsfx中已經存在一個第三方驗證庫 。 但是,我有一個問題:它不是在考慮FXML的情況下創建的。 這并不是說它不是一個很好的庫,只是錯過了這個細節,對我來說這是不可行的。 因此,我決定創建自己的驗證框架: FXValidation 。
怎么運行的
為了向您展示FXValidation的工作原理,讓我們從頭開始,向您展示一個使用該庫時FXML文件的外觀示例。 這是一個登錄屏幕的簡單示例,其中用戶需要輸入用戶名和密碼:
<Label><text>User Name:</text> </Label> <TextField fx:id="userName" id="userName"></TextField> <Label><text>Password:</text> </Label> <PasswordField fx:id="password" id="password"></PasswordField><Button text="Submit" onAction="#submitPressed"></Button><fx:define><RequiredField fx:id="requiredField1" ><srcControl><fx:reference source="userName"></fx:reference></srcControl></RequiredField><RequiredField fx:id="requiredField2" ><srcControl><fx:reference source="password"></fx:reference></srcControl></RequiredField> </fx:define><ErrorLabel message="Please enter your username"><validator><fx:reference source="requiredField1"></fx:reference></validator> </ErrorLabel> <ErrorLabel message="Please enter your password"><validator><fx:reference source="requiredField2"></fx:reference></validator> </ErrorLabel>在FXML代碼段的開頭,我定義了用于輸入登錄詳細信息的文本字段和密碼字段。 除此之外,還有一個提交按鈕,以便用戶可以將登錄信息發送到系統。 之后是有趣的部分。 首先,我們定義幾個RequiredField類型的驗證器。 該驗證器檢查所輸入的內容是否為空,如果是,則在標志中存儲驗證是否有錯誤。 FXValidation框架中還內置了其他類型的驗證器,但我們將稍作介紹 。 最后,我們定義了幾個ErrorLabel。 這是實現IValidationDisplay的節點,實現此接口的任何類都是一個類,其目的是在驗證過程中發生錯誤時向用戶顯示信息。 當前,框架中只有此類之一:ErrorLabel。 最后,我們需要在用戶單擊“提交”按鈕時調用驗證,這是在控制器中的Submit方法上完成的:
public void submitPressed(ActionEvent actionEvent) {requiredField1.eval();requiredField2.eval(); }這將觸發對我們定義的驗證器的驗證。 如果有錯誤,ErrorLabels將顯示在其中定義的錯誤消息。 驗證器還有另外一件事:驗證器生效后,它們將css樣式類“ error”添加到每個有錯誤的控件中。 這使程序員只要在控件上附加了錯誤類,就可以使用css改變控件的樣式。 程序員可以通過檢查驗證器中的hasErrors屬性來檢查驗證過程中的錯誤。
這是我們的示例:
細節
從上面顯示的內容可以看出,基本上涉及兩種類型的類:
- 驗證器:負責檢查目標控件( srcControl )是否符合驗證規則。 如果沒有,它將“錯誤”樣式類附加到目標控件,將其hasErrors屬性設置為true。 所有驗證器都從ValidatorBase擴展。
- 錯誤顯示信息:負責通知用戶驗證發生了什么問題,可能是必填字段,字段內容沒有必要的字符數,等等。所有這些類都實現IValidationDisplay 。
在庫中,當前有3個驗證器,并且只有一個錯誤“顯示器”即ErrorLabel。 驗證器如下:
- RequiredField:檢查目標控件( srcControl )是否具有內容,如果沒有,則給出錯誤。
- CardinalityValidator:檢查目標控件( srcControl )是否至少具有最小字符數和最大最大字符數。
- RegexValidator:根據給定的正則表達式檢查目標控件( srcControl )的內容
就是這樣。
翻譯自: https://www.javacodegeeks.com/2014/08/validation-in-java-javafx.html
總結
以上是生活随笔為你收集整理的Java验证(javafx)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 淳安信息网(淳安备案)
- 下一篇: ddos的肉鸡怎么来(ddos怎么利用肉