Voltar para Home
por Eliezer Brasilian

Criando um arsenal de coisas úteis para o desenvolvimento mais rápido de aplicativos JavaFX

Sou Engenheiro de Software e uma das coisas que mais gosto é o desenvolvimento de aplicativos desktop, porque são inúmeras coisas que podemos fazer com aplicativo desktop: temos a liberdade de utilizar o Sistema Operacional de tal forma que não é possível com aplicações web e nem mesmo em Sistemas móveis como Android por exemplo.

Problemas

Se eu dissesse que desenvolver de forma padrão com JavaFX é prazerosa, bem... Eu estaria mentindo, digo isso porque a criação de componentes traz consigo muito código boilerplate, e diversas coisas que poderiam ser mais simples. Por exemplo, a criação de um componente de Texto que tem seu conteúdo alterado dinamicamente depende que você crie listeners e que faça setText manualmente no componente de Texto quando desejado, e inclusive não existe nativamente o conceito de Estados e montagem de UI declarativa como em frameworks modernos, como React, Flutter e Jetpack compose por exemplo.

O que estou criando

megalodonte-components

Decidi atacar esse problema pela raiz, basicamente recriei os princípios componentes para ter suporte nativo a estados e reatividade. Inicialmente criei os componentes: Text, Button, Image, Column, Row e então conforme eu fui tendo necessidade de outros componentes então fui criando mais como: Card, Clickable, GridFlow, Scrool e Menu. ##Exemplo de uso

public class Tela{
  public Component render(){
    return new Column()
      .c_child(new Text("Sou um texto"))
      .c_child(new Button("Click em mim"));
   }
}

Veja o repositório para conhecer o projeto megalodonte-components.

megalodonte-states

Para evitar a criação de listeners manuais e possibilitar o uso de States(Estados), tenho criado a biblioteca megalodonte-reactivity totalmente integrada com os componentes da biblioteca megalodonte-components. Então agora você não precisa ficar pensando tanto pra criar suas UIs reativas, isso é algo que pra mim era muito overenginnering com javaFX padrão. Veja o repositório para conhecer o projeto megalodonte-reactivity. ##Exemplo de uso

public class Tela{
  State<String> name = State.of("");

  public Component render(){
    return new Column()
      .c_child(new Text(name))
      .c_child(new Input(name, new InputProps().placeholder("Digite seu nome")))
      .c_child(new Button("Clique em mjm"));
   }
}

megalodonte-router

Temos também megalodonte-router o que possibilita você configurar a navegação do aplicativo, sem a bagunça de invocar stage.setScene() ou stage.show() sempre que quiser mudar uma tela ou abrir uma nova janela. Agora está muito mais simples. Veja o repositório para conhecer o projeto megalodonte-router.

Pra você que quer mergulhar na criação de aplicativos desktop com JavaFX tenho meu curso na Udemy que super recomendo: COMECE HOJE A CRIAR APLICATIVOS DESKTOP 🖥️ 👌

https://www.udemy.com/course/curso-javafx-programacao-desktop-passo-a-passo/?referralCode=39EBA837B0A095B0A347