यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
टेक्स्ट फ़ील्ड को कैसे सत्यापित करें
उद्देश्य. यह सुनिश्चित करना कि उपयोगकर्ता केवल मान्य वर्ण ही टाइप कर सके, वर्णों की संख्या सीमित करना और सबमिट करते समय मास्क रहित मान प्राप्त करना। CrossFly में इनपुट सत्यापन घोषणात्मक होता है (फ़ील्ड के स्टाइल में किया जाता है), और व्यावसायिक सत्यापन सबमिट करते समय किया जाता है।
उपयोग की गई APIs
campo.<TextFieldStyle>getStyle().validChars("0123456789")— स्वीकृत वर्णों को फ़िल्टर करता है।null(डिफ़ॉल्ट) सब कुछ स्वीकार करता है। तुलना बड़े अक्षरों में की जाती है: आंतरिक रूप सेisCharValid(c),validChars.indexOf(Character.toUpperCase(c))करता है, इसलिए अक्षरों को बड़े अक्षरों में दें भले ही फ़ील्ड छोटे अक्षर स्वीकार करे।campo.<TextFieldStyle>getStyle().maxLength(11)— वर्णों की कुल संख्या सीमित करता है (0= असीमित)। यह टाइपिंग और पेस्ट करने (clipboardPaste) दोनों पर लागू होता है।campo.<TextFieldStyle>getStyle().capitalise(Capitalise.UPPER)— बड़े/छोटे अक्षरों को बाध्य करता है (UPPER,LOWER,NORMAL)।TextField.getText()— प्रदर्शित रूप में टेक्स्ट (मास्क सहित, यदि हो)।TextField.getTextWithoutMask()— केवल अंक/कच्चा कंटेंट (उदा.:"123.456.789-00"के बजाय"12345678900")। सबमिट करते समय इसका उपयोग करें।TextInput.mapKeys(from, to)— कुंजियों को पुनः मैप करता है (उदा.: अल्पविराम को बिंदु से बदलना)।fromऔरtoकी लंबाई समान होनी चाहिए।
CrossFly में प्रति-कुंजी कोई कॉलबैक नहीं है। कोई
onTextChangedनहीं है — आप सबमिट करते समय (या बटन केonActionके अंदर)getText()/getTextWithoutMask()पढ़ते हैं।
पूर्ण उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)
package com.exemplo;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.style.*; // TextFieldStyle (style में config)
/** चलाने योग्य मुख्य स्क्रीन। launcher (classname) की ओर संकेत करें और चलाएँ: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
@Override
public void onShow() throws Exception
{
super.onShow();
setLayout(new VerticalLayout());
TextField cpf = new TextField("");
cpf.caption("CPF");
cpf.<TextFieldStyle>getStyle()
.validChars("0123456789") // केवल अंक
.maxLength(11); // 11 अंक
TextField apelido = new TextField("");
apelido.caption("Apelido");
apelido.<TextFieldStyle>getStyle()
.capitalise(Capitalise.LOWER)
.maxLength(20);
Label resultado = new Label("");
Button enviar = new Button("Enviar");
enviar.onAction(origin ->
{
String cpfLimpo = cpf.getTextWithoutMask(); // "12345678900"
if (cpfLimpo.length() != 11)
{
Hint.show("CPF deve ter 11 dígitos", 2000);
return;
}
resultado.setText("CPF: " + cpfLimpo + " · apelido: " + apelido.getText());
});
add(LAY_FILL, cpf);
add(LAY_FILL, apelido);
add(LAY_AUTO, enviar);
add(LAY_FILL, resultado);
}
}
नीचे दिया गया अंश केवल मुख्य भाग दिखाता है। चलाने के लिए, इसे ऊपर दिए गए
MainWindowढाँचे में रखें।
न्यूनतम अंश
import dev.crossfly.ui.*;
import dev.crossfly.ui.style.*;
import static dev.crossfly.ui.UIConstants.Capitalise;
TextField cpf = new TextField("");
cpf.caption("CPF");
cpf.<TextFieldStyle>getStyle()
.validChars("0123456789") // केवल अंक
.maxLength(11); // 11 अंक
TextField apelido = new TextField("");
apelido.caption("Apelido");
apelido.<TextFieldStyle>getStyle()
.capitalise(Capitalise.LOWER)
.maxLength(20);
Button enviar = new Button("Enviar");
enviar.onAction(origin ->
{
String cpfLimpo = cpf.getTextWithoutMask(); // "12345678900"
if (cpfLimpo.length() != 11)
{
new Alert("Erro", "CPF deve ter 11 dígitos").show();
return;
}
// ... भेजने के साथ आगे बढ़ता है
});
गहराई से जानें
- मास्क और कीबोर्ड · फोकस और सत्यापन
- सहयोगी रेसिपी: CPF/CEP/तिथि मास्क · पासवर्ड फ़ील्ड
- कैननिकल स्रोत: अध्याय 14 — मूल विजेट · Enums (UIConstants)
क्या यह पृष्ठ उपयोगी था?प्रतिक्रिया के लिए धन्यवाद!