Esta página fue traducida automáticamente del portugués y puede contener errores. La versión en portugués es la canónica.
Anatomía de un proyecto
Entiende lo que generó el “esqueleto” antes de tocarlo.
Los módulos 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)
Programas casi siempre en el core. Cada launcher solo hace el bootstrap del SO — instancia el Main
y configura la ventana (ver plataformas).
Cómo se resuelve la MainWindow
El Main instancia la ventana principal por reflexión:
- usa la clase indicada en
cmdline["classname"](pasada por el launcher); o - en su ausencia, el
getMainWindow()sobrescrito.
Exigencia: la clase necesita un constructor público sin argumentos (se instancia por reflexión).
Ejemplo completo (copiar, pegar y ejecutar)
Clase MainWindow mínima y ejecutable, con el constructor sin-args exigido por la reflexión:
package com.exemplo;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
public class MainWindow extends Window
{
public MainWindow() { } // constructor sin-args (obligatorio para la reflexión)
@Override
public void onShow() throws Exception
{
super.onShow();
setLayout(new VerticalLayout());
add(LAY_AUTO, new Label("MainWindow resolvida por classname"));
}
}
Organización de app sugerida
Dentro del core, una estructura que escala (ver arquitectura de app):
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 y fuentes
Las fuentes base (Roboto, FontAwesome, Material) se cargan en el bootstrap; tus assets (imágenes, datos) quedan en el directorio de assets del proyecto y se leen por ruta (ver Imágenes).
Próximos pasos
Ver también
- Concepto: El ciclo de vida · La arquitectura en capas