5 de set de 2016

Listas e imagens: ListView

Nessa rápida postagem iremos falar sobre imagens dentro das ListView do JavaFX.

A ListView


A classe javafx.scene.control.ListView permite mostrar listas de algum objeto e também que seja selecionado um dos items. A ListView é um Node. Ou seja, você pode adicionar ela em qualquer um dos painéis que já falamos aqui e assim mostrar a lista na sua aplicação. Veja abaixo um exemplo de ListView:






Como as tabelas, temos um método getItems que permite você acessar os itens e adicionar novos. A lista pode ser vertical, como acima, ou horizontal usando o método lista.setOrientation(Orientation.HORIZONTAL). Um exemplo:




Customizando ListView 


Cada item é adicionado em uma ListCell<TIPO>, que você pode customizar. Uma forma simples de customizar é criando sua própria ListCell (uma classe que estende de ListCell) e sobreescrever o método updateItem. Ao sobreescrever o método, não se esqueça de chamar super.updateItem e seja feliz mexendo nas configurações da célula. Importante dizer que a célula pode ter o texto mudado e também o graphics, ou seja, você pode configurar uma imagem e o texto de acordo com o objeto que você colocou no TIPO.

O TIPO é o seguinte: Uma ListCell é parametrizada, ou seja, você informa o tipo de objeto que ela aceita. Assim você vai ter erros se tentar inserir outros tipos. Ou seja, se a sua lista é do tipo String, você tem erros ao inserir Integer nessa lista. O mesmo vale para a ListCell, você cria uma ListCell para o TIPO que escolher. Por fim, o tipo vale também para tipos customizados da sua aplicação.

Agora que você criou sua célula, como você informa que quer usar ela na sua lista? Bem, a resposta é simplesmente informar uma fábrica de células usando o método setCellFactory. Não se apavore, com Java 8 você simplesmente usa o seguinte: lista.setCellFactory(param -> new MinhaListCell())


Um exemplo com imagem


O código abaixo esclarece tudo que mencionei:

Conclusão


Falamos brevemente de ListCell. Na verdade o objetivo dessa postagem é preparar terreno para a próxima que fala da aplicação que mostramos nos screenshots - até lá!

Um comentário:

  1. Tenho uma tela de cadastro de usuários onde vou dar permissão para o mesmo. Nesse formulário vou ter duas combobox. Uma para as telas do projeto outra para mostrar o nome dos botões que contém cada tela. Exemplo:
    Tela de Clientes: Botão Novo, Botão Salvar, Botão Alterar, Botão Pesquisar e Botão Excluir
    Tela de Produtos: Botão Novo, Botão Salvar, Botão Alterar, Botão Pesquisar, Botão Excluir e Botão Cadastrar Fornecedor
    Tela de Fornecedores: Botão Novo, Botão Salvar, Botão Alterar, Botão Pesquisar e Botão Excluir
    Como fazer isso ai no JavaFX?

    ResponderExcluir