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

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

3. कॉम्पोनेंट्स में सोचना

आप क्या सीखेंगे: हर चीज़ के आधार के रूप में Component, जीवन-चक्र, संयोजन और एक पुन:उपयोग योग्य कॉम्पोनेंट कैसे बनाएँ। पूर्वापेक्षाएँ: Windows और नेविगेशन।

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

एक पुन:उपयोग योग्य कॉम्पोनेंट (CardTarefa) जो onAdd में एक बार बनाया जाता है और bind(...) के माध्यम से डेटा से पुन:जोड़ा जाता है। window अलग-अलग डेटा के साथ तीन cards बनाती है। जैसा है वैसा ही compile होता है।

package com.exemplo;

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

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

      CardTarefa c1 = new CardTarefa(); add(LAY_AUTO, c1); c1.bind(new Tarefa("Comprar pão"));
      CardTarefa c2 = new CardTarefa(); add(LAY_AUTO, c2); c2.bind(new Tarefa("Pagar conta"));
      CardTarefa c3 = new CardTarefa(); add(LAY_AUTO, c3); c3.bind(new Tarefa("Estudar CrossFly"));
   }
}

class Tarefa                                             // न्यूनतम मॉडल
{
   final String titulo;
   Tarefa(String titulo) { this.titulo = titulo; }
}

class CardTarefa extends Component
{
   private final Label titulo = new Label();

   @Override
   public void onAdd(boolean firstTime) throws Exception  // संरचना एक बार बनाता है
   {
      super.onAdd(firstTime);
      setLayout(new HorizontalLayout());
      add(LAY_FILL, titulo);
   }

   public void bind(Tarefa t)                             // डेटा के अनुसार फिर से बांधता है (सस्ता)
   {
      titulo.setText(t.titulo);
      repaint();
   }
}

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

सब कुछ Component है, container = Component + Layout

एक Label एक Component है। एक Button एक Component है। कोई भी Component एक Layout पाते ही container बन जाता है, और add(...) व्यवस्था को layout को सौंप देता है।

Component painel = new Component();
painel.setLayout(new VerticalLayout());
painel.add(LAY_AUTO, new Label("Título"));

जीवन-चक्र

हुक कब उपयोग
onAdd(boolean firstTime) पेड़ में प्रवेश करते समय आरंभीकरण (संसाधन केवल पहली बार → firstTime)
onRemove() बाहर निकलते समय timers/listeners मुक्त करना

bind(...) के साथ पुन:उपयोग योग्य कॉम्पोनेंट

पुनर्चक्रण योग्य “card” का पैटर्न: संरचना को एक बार बनाएँ (onAdd में) और डेटा से पुन:जोड़ें:

public class CardTarefa extends Component {
   private final Label titulo = new Label();
   @Override public void onAdd(boolean firstTime) throws Exception {
      super.onAdd(firstTime);
      setLayout(new HorizontalLayout());
      add(LAY_FILL, titulo);
   }
   public void bind(Tarefa t) {      // डेटा के अनुसार फिर से बांधता है (सस्ता, कई बार बुलाया जाता है)
      titulo.setText(t.titulo);
      repaint();
   }
}

यह ठीक वही पैटर्न है जिसका उपयोग VirtualListView views को पुनर्चक्रित करने के लिए करता है (देखें डेटा लोड करना)।

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

पुन:उपयोग योग्य CardTarefa कॉम्पोनेंट — एक बार बनाया गया, प्रत्येक कार्य के लिए पुन:जोड़ा गया।

पुनरावलोकन

Component आधार है; container = Component + Layout; onAdd(firstTime) में आरंभ करें, onRemove() में मुक्त करें; custom कॉम्पोनेंट बनाना (एक बार) को जोड़ना (bind, कई बार) से अलग करते हैं।

अगले कदम

→ Layouts

यह भी देखें

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