Class DataTable<T>

java.lang.Object
fabiorodrigues.bricks.components.DataTable<T>
Type Parameters:
T - o tipo dos itens da tabela
All Implemented Interfaces:
Component

public class DataTable<T> extends Object implements Component
Tabela de dados com suporte a pesquisa, ordenação, paginação, seleção de linhas e ações por linha e por toolbar.

Gere o seu próprio estado interno — não usa BricksApplication.state(). O re-render parcial (header + linhas + footer) acontece dentro do próprio componente, sem desencadear um re-render de toda a aplicação.


 new DataTable<Aluno>()
     .items(alunos)
     .searchable()
     .columnToggle()
     .toolbarAction("Exportar", () -> exportar())
     .toolbarAction("Apagar selecionados",
         () -> apagar(tabela.getSelected()),
         SelectionMode.REQUIRES_SELECTION)
     .column("Nome", Aluno::nome).bold()
     .column("Turma", Aluno::turma).width(80).align(Align.CENTER)
     .actionColumn(new TableAction<Aluno>()
         .icon("fas-pencil").tooltip("Editar").onClick(a -> editar(a)))
     .actionColumn(new TableAction<Aluno>()
         .icon("fas-trash").tooltip("Apagar").danger().onClick(a -> apagar(a)))
     .selectable()
 
  • Constructor Details

    • DataTable

      public DataTable()
  • Method Details

    • items

      public DataTable<T> items(List<T> items)
      Define a fonte de dados como List estática.
      Parameters:
      items - lista de itens
      Returns:
      este componente para encadeamento
    • items

      public DataTable<T> items(StateList<T> items)
      Define a fonte de dados como StateList reativa.
      Parameters:
      items - lista reativa de itens
      Returns:
      este componente para encadeamento
    • searchable

      public DataTable<T> searchable()
      Ativa o campo de pesquisa na toolbar.
    • columnToggle

      public DataTable<T> columnToggle()
      Ativa o botão de toggle de colunas na toolbar.
    • selectable

      public DataTable<T> selectable()
      Ativa a seleção de linhas com checkbox e clique na linha.
    • column

      public DataTable<T> column(String name, Function<T,String> valueFunction)
      Adiciona uma coluna de dados. Os métodos bold(), width(double), align(Align) e wrapText() seguintes aplicam-se a esta coluna.
      Parameters:
      name - cabeçalho da coluna
      valueFunction - função que extrai o valor a apresentar
      Returns:
      este componente para encadeamento
    • column

      public DataTable<T> column(String name, Function<T,String> valueFunction, Consumer<DataTableColumn<T>> config)
      Adiciona uma coluna com configuracao inline via lambda.
      
       .column("Nome", Aluno::getNome, col -> col.width(250).bold().wrapText())
       
      Parameters:
      name - cabecalho da coluna
      valueFunction - funcao que extrai o valor como String
      config - lambda de configuracao da coluna
      Returns:
      este componente para encadeamento
    • bold

      public DataTable<T> bold()
      Aplica negrito à última coluna adicionada.
    • width

      public DataTable<T> width(double w)
      Define a largura fixa (px) da última coluna adicionada.
      Parameters:
      w - largura em pixels
      Returns:
      este componente para encadeamento
    • align

      public DataTable<T> align(Align align)
      Define o alinhamento da última coluna adicionada.
      Parameters:
      align - Align.LEFT, Align.CENTER ou Align.RIGHT
      Returns:
      este componente para encadeamento
    • wrapText

      public DataTable<T> wrapText()
      Ativa o word wrap na última coluna adicionada.
    • actionColumn

      public DataTable<T> actionColumn(TableAction<T> action)
      Adiciona uma coluna de ação — botão compacto 32×32 com ícone, por linha.
      Parameters:
      action - definição da ação
      Returns:
      este componente para encadeamento
    • toolbarAction

      public DataTable<T> toolbarAction(String label, Runnable action)
      Adiciona um botão à toolbar, sempre ativo.
      Parameters:
      label - texto do botão
      action - ação a executar
      Returns:
      este componente para encadeamento
    • toolbarAction

      public DataTable<T> toolbarAction(String label, Runnable action, SelectionMode mode)
      Adiciona um botão à toolbar com controlo de disponibilidade.
      Parameters:
      label - texto do botão
      action - ação a executar
      mode - SelectionMode.ALWAYS ou SelectionMode.REQUIRES_SELECTION
      Returns:
      este componente para encadeamento
    • pageSize

      public DataTable<T> pageSize(int size)
      Define o número de itens por página (por defeito: 20).
      Parameters:
      size - número de itens por página
      Returns:
      este componente para encadeamento
    • modifier

      public DataTable<T> modifier(Modifier modifier)
      Aplica um Modifier ao contentor raiz.
      Parameters:
      modifier - o modifier a aplicar
      Returns:
      este componente para encadeamento
    • getSelected

      public Set<T> getSelected()
      Devolve os itens atualmente selecionados.
      Returns:
      conjunto imutável de itens selecionados
    • render

      public javafx.scene.Node render()
      Description copied from interface: Component
      Converte este componente num Node JavaFX pronto a ser adicionado ao scene graph.
      Specified by:
      render in interface Component
      Returns:
      o Node JavaFX correspondente a este componente