यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
फ़ोकस और मान्यता
चूँकि कोई प्रति-कुंजी घटना नहीं है, CrossFly में मान्यता भेजते समय (या फ़ोकस खोने पर)
होती है: आप getText() पढ़ते हैं, निर्णय लेते हैं, और त्रुटि को संकेतित करते हैं।
पूर्ण उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)
package com.exemplo;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.style.*; // TextFieldStyle (व्यवहारिक कॉन्फ़िग)
/** चलाने योग्य मुख्य स्क्रीन। launcher (classname) की ओर संकेत करें और चलाएँ: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
@Override
public void onShow() throws Exception
{
super.onShow();
setLayout(new VerticalLayout());
TextField nome = new TextField().caption("Nome");
add(LAY_AUTO, nome);
TextField email = new TextField().caption("E-mail");
add(LAY_AUTO, email);
// केवल-पठन फ़ील्ड: मान दिखाता है, कीबोर्ड नहीं खोलता और टच पर फ़ोकस नहीं करता
TextField codigo = new TextField("ABC-123").caption("Código");
codigo.<TextFieldStyle>getStyle().editable(false);
add(LAY_AUTO, codigo);
// सत्यापन सबमिट पर होता है (प्रति-कुंजी इवेंट नहीं है):
// खाली फ़ील्ड → Hint.show(...) + त्रुटि वाले फ़ील्ड पर फ़ोकस लौटाता है।
Button enviar = new Button("Cadastrar");
enviar.onAction(c -> {
String n = nome.getText().trim();
String e = email.getText().trim();
if (n.isEmpty()) { Hint.show("Informe o nome", 2000); nome.setFocused(true); return; }
if (e.indexOf('@') < 0) { Hint.show("E-mail inválido", 2000); email.setFocused(true); return; }
Hint.show("Cadastrado: " + n, 2000);
});
add(LAY_AUTO, enviar);
}
}
नीचे दिए गए स्निपेट केवल मुख्य भाग दिखाते हैं (जो
onShow()के अंदर जाता है)। चलाने के लिए, उन्हें ऊपर दिए गएMainWindowढाँचे में रखें।
फ़ोकस
| प्रॉपर्टी (स्टाइल) / मेथड | प्रभाव |
|---|---|
focusOnTouch (स्टाइल) |
फ़ील्ड को छूने पर फ़ोकस मिलता है (फ़ील्ड स्टाइल में डिफ़ॉल्ट) |
focusOnKey (स्टाइल) |
पैरेंट फ़ोकस होने पर कुंजी दबाने से फ़ोकस फ़ील्ड पर जाता है |
onFocus() / onBlur() |
फ़ोकस पाने / खोने पर बुलाए गए हुक (सबक्लास में ओवरराइड करें) |
hasFocus() |
जाँचता है कि फ़ील्ड फ़ोकस्ड है या नहीं |
restoreFocusAtEnd() |
कर्सर को अंत में पुनः स्थापित करता है (पिकर द्वारा भरने के बाद) |
// केवल-पठन फ़ील्ड (मान दिखाता है, कीबोर्ड नहीं खोलता और टच पर फ़ोकस नहीं करता):
saldo.<TextFieldStyle>getStyle().editable(false);
इनपुट सीमाएँ
telefone.<TextFieldStyle>getStyle()
.maxLength(11) // अधिकतम 11 अक्षर
.capitalise(Capitalise.UPPER); // बड़े अक्षर लागू करता है (Capitalise: NORMAL/UPPER/LOWER)
भेजते समय मान्यता (अनुशंसित पैटर्न)
Button enviar = new Button("Cadastrar");
enviar.onAction(c -> {
String nome = nomeField.getText().trim();
String email = emailField.getText().trim();
if (nome.isEmpty()) { Hint.show("Informe o nome", 2000); nomeField.setFocused(true); return; }
if (email.indexOf('@') < 0) { Hint.show("E-mail inválido", 2000); emailField.setFocused(true); return; }
salvar(nome, email);
});
- गैर-अवरोधक सूचनाओं के लिए
Hint.show(...); पुष्टियों के लिएAlert(देखें डायलॉग और मोडल)। - उपयोगकर्ता को सुधार करने के लिए त्रुटि वाले फ़ील्ड पर फ़ोकस वापस दें।
अच्छे तौर-तरीके
getText()/getTextWithoutMask()पढ़कर भेजने के समय मान्य करें — हर कुंजी को इंटरसेप्ट करने की कोशिश न करें।- गणना/व्युत्पन्न फ़ील्ड के लिए “अक्षम करना और पढ़ना मजबूर करना” के बजाय
editable(false)का उपयोग करें। - मान्यता कम करने के लिए स्रोत पर इनपुट प्रतिबंधित करें (
mask,maxLength,EditMode.NUMERIC)।
आम गलतियाँ
- प्रति-कुंजी परिवर्तन लिसनर खोजना — यह मौजूद नहीं है; भेजते समय/फ़ील्ड छोड़ते समय मान्य करें।
- अमान्य फ़ील्ड पर फ़ोकस वापस देना भूल जाना, उपयोगकर्ता को खोया हुआ छोड़ देना।
- जब नियम अंकों के बारे में हो तो
getText()(मास्क के साथ) को मान्य करना →getTextWithoutMask()का उपयोग करें।
यह भी देखें
क्या यह पृष्ठ उपयोगी था?प्रतिक्रिया के लिए धन्यवाद!