यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
प्रोजेक्ट की शारीरिक-रचना
“ढाँचे” में हाथ लगाने से पहले समझें कि उसे किसने उत्पन्न किया।
Gradle मॉड्यूल
:core → código compartilhado: suas Windows, componentes, lógica, dados
:lwjgl3 → launcher desktop
:android → launcher Android
:ios → launcher iOS (RoboVM)
:web → launcher Web (TeaVM)
आप लगभग हमेशा core में प्रोग्रामिंग करते हैं। हर लॉन्चर केवल OS का bootstrap करता है — Main को
इंस्टैंशिएट करता है और विंडो को कॉन्फ़िगर करता है (देखें plataformas)।
MainWindow कैसे हल होता है
Main मुख्य विंडो को रिफ़्लेक्शन द्वारा इंस्टैंशिएट करता है:
cmdline["classname"]में इंगित क्लास का उपयोग करता है (लॉन्चर द्वारा पारित); या- इसकी अनुपस्थिति में, ओवरराइड किया गया
getMainWindow()।
आवश्यकता: क्लास को एक सार्वजनिक बिना-आर्ग्युमेंट वाला कंस्ट्रक्टर चाहिए (यह रिफ़्लेक्शन द्वारा इंस्टैंशिएट होती है)।
संपूर्ण उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)
न्यूनतम और चलाने योग्य MainWindow क्लास, रिफ़्लेक्शन द्वारा अपेक्षित बिना-आर्ग्स कंस्ट्रक्टर के साथ:
package com.exemplo;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
public class MainWindow extends Window
{
public MainWindow() { } // बिना-args कंस्ट्रक्टर (reflection के लिए अनिवार्य)
@Override
public void onShow() throws Exception
{
super.onShow();
setLayout(new VerticalLayout());
add(LAY_AUTO, new Label("MainWindow resolvida por classname"));
}
}
सुझाई गई ऐप संरचना
core के भीतर, एक ऐसी संरचना जो स्केल करती है (देखें ऐप आर्किटेक्चर):
app/
├─ ui/screens/ → suas Windows (uma tela = uma Window)
├─ ui/components/ → componentes reutilizáveis
├─ data/ → repositórios (SQLite, rede)
└─ model/ → objetos de domínio
Assets और फ़ॉन्ट
बेस फ़ॉन्ट (Roboto, FontAwesome, Material) bootstrap पर लोड होते हैं; आपके assets (चित्र, डेटा) प्रोजेक्ट के assets डायरेक्टरी में रहते हैं और पथ द्वारा पढ़े जाते हैं (देखें Imagens)।
अगले कदम
यह भी देखें
- अवधारणा: जीवनचक्र · स्तरित आर्किटेक्चर