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