मुख्य सामग्री पर जाएँ
CrossFly 100% ओपन सोर्सGitHub पर फ़ॉलो करें
CrossFlyCrossFly
शुरू करें

यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।

फ़ोकस और मान्यता

चूँकि कोई प्रति-कुंजी घटना नहीं है, 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() का उपयोग करें।

यह भी देखें

क्या यह पृष्ठ उपयोगी था?