Esta página fue traducida automáticamente del portugués y puede contener errores. La versión en portugués es la canónica.
Quickstart: Hello World
El momento “¡funciona!”. Al final de esta página tienes una app interactiva ejecutándose en el escritorio.
Ejemplo completo (copiar, pegar y ejecutar)
Crea tu ventana principal — una subclase de dev.crossfly.ui.Window:
package com.exemplo.app;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
public class MainWindow extends Window {
@Override
public void onShow() throws Exception {
super.onShow(); // obligatorio: bounds válidos + dispara onAdd
setLayout(new VerticalLayout());
Label saudacao = new Label("Olá, CrossFly!");
Button botao = new Button("Clique");
botao.onAction(c -> saudacao.setText("Você clicou!")); // corre en el paint thread
add(LAY_AUTO, saudacao); // LAY_AUTO = altura natural
add(LAY_AUTO, botao);
}
}
Ejecutar
gradlew :lwjgl3:run
Se abre una ventana con el texto y el botón; al hacer clic cambia el texto. 🎉
Los 4 hechos que sostienen todo lo demás
- Pantalla = subclase de
Window. Cada pantalla de la app es unaWindow. - La UI se monta en
onShow(), no en el constructor (allí los bounds aún no son válidos) — y siempre consuper.onShow(). - Todo es
Componentyadd(tamaño, comp)delega la disposición alLayout(LAY_AUTO=natural,LAY_FILL=rellena lo que sobra). - La
MainWindowse apunta por classname (ver Anatomía de un proyecto).
Sin binding reactivo: el clic muta el
Label(setText) — actualizas la UI a mano. Es el modelo imperativo de CrossFly (ver Estado y flujo de datos).
Próximos pasos
→ Tu primera app (guiada, de punta a punta)
Ver también
¿Te resultó útil esta página?¡Gracias por tu opinión!