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

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

6. इनपुट संभालना

आप क्या सीखेंगे: टच, कुंजियों और जेस्चर पर प्रतिक्रिया देना, और टेक्स्ट इनपुट पढ़ना। पूर्वापेक्षाएँ: शैलियाँ और थीम।

संपूर्ण उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)

कार्य जोड़ने का फ़ॉर्म: सत्यापन वाला फ़ील्ड + बटन, सबमिट पर टेक्स्ट पढ़ना और Hint के साथ प्रतिक्रिया। कार्यों को एक आउटपुट Label में जोड़ता है। जैसा है वैसा ही compile होता है।

package com.exemplo;

import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;

public class MainWindow extends Window
{
   private final TextField campo = new TextField().caption("Nova tarefa");
   private final Label saida = new Label("Nenhuma tarefa ainda");

   @Override
   public void onShow() throws Exception
   {
      super.onShow();
      setLayout(new VerticalLayout());

      add(LAY_AUTO, campo);

      Button add = new Button("Adicionar");
      add.onAction(c -> {                                 // paint thread पर चलता है
         String texto = campo.getText().trim();
         if (texto.isEmpty()) { Hint.show("Digite algo", 2000); return; }   // सत्यापन (2 args)
         adicionarTarefa(texto);
         campo.clearText();
      });
      add(LAY_AUTO, add);

      add(LAY_AUTO, saida);
   }

   private void adicionarTarefa(String texto)
   {
      saida.setText("Adicionada: " + texto);
      saida.repaint();
   }
}

नीचे के अंश केवल मूल भाग दिखाते हैं (जो onShow() के भीतर जाता है)। चलाने के लिए, उन्हें ऊपर के MainWindow ढाँचे में रखें।

onAction बनाम onActionThread

botao.onAction(c -> salvar());          // paint thread पर चलता है (तेज़, UI को छूता है)
botao.onActionThread(c -> {             // बैकग्राउंड thread पर चलता है (भारी काम)
   var dados = baixar();
   c.onUI(() -> mostrar(dados));         // UI पर वापस
});

टेक्स्ट इनपुट — सबमिट पर पढ़ें

प्रति-कुंजी कोई इवेंट नहीं है: जब ज़रूरत हो तब getText() पढ़ें (उदा.: बटन पर)।

TextField campo = new TextField().caption("Nova tarefa");
Button add = new Button("Adicionar");
add.onAction(c -> {
   String texto = campo.getText().trim();
   if (texto.isEmpty()) { Hint.show("Digite algo", 2000); return; }   // सत्यापन
   adicionarTarefa(texto);
   campo.clearText();
});

फ़ोकस: जब फ़ोकस के मिलने/खोने पर प्रतिक्रिया देनी हो तब किसी उपवर्ग में onFocus()/onBlur() को ओवरराइड करें।

टच जेस्चर (ओवरराइड करने योग्य)

किसी custom कॉम्पोनेंट में, जेस्चर के लिए handlers को ओवरराइड करें:

@Override public void onLongTouch(float x, float y) throws Exception { abrirDetalhe(); }
// साथ ही: onTouchDown/onTouchUp/onPan

callbacks में अपवाद Debug.handle में जाते हैं (frame गिराने के लिए ऊपर नहीं उठते)।

इस चरण में क्या बनाया जाता है

कार्य जोड़ने का फ़ॉर्म (फ़ील्ड + बटन + सत्यापन) और विवरण खोलने का जेस्चर।

पुनरावलोकन

onAction (UI) / onActionThread (पृष्ठभूमि); सबमिट पर getText() से टेक्स्ट पढ़ें; ओवरराइड करने योग्य handlers द्वारा जेस्चर; त्रुटियाँ Debug.handle में जाती हैं।

अगले कदम

→ स्टेट प्रबंधन

यह भी देखें

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