Lista de botões

4 respostas
S

Olá galera estou tentando criar uma lista de botões como esse aqui http://img855.imageshack.us/img855/8205/listauk.png mas não sei como fazer.
Alguém tem alguma dica?

Ah, eu ia me esquecendo: os botões serão criados em tempo de execução pois eles são retirados da base de dados…

4 Respostas

Nicolas_Fernandes

Já tem ideia de como usar Layouts e tudo o mais?

S

Tenho sim, mas eu estou sem idéias para fazer…

Nicolas_Fernandes

Bom, creio que você tá lendo esses "Tipos musicais" do banco de dados, certo?
Você pode fazer algo assim:

Sua classe de tipos musicais:
public class TipoMusical {

   private Long ID;
   private String nome;

   // getters e setters omitidos.
}
Sua classe de persistência:
public class PersistenciaTipoMusical {

    public List<TipoMusical> recuperarTodos() throws SQLException {

        String sentencaSelect = "SELECT * FROM DBO.TIPOSMUSICAIS";
        PreparedStatement statementSelect = connectionSelect.prepareStatement(sentencaSelect);
        ResultSet resultSelect = statementSelect.executeQuery();
 
        List<TipoMusical> tiposMusicais = new ArrayList<TipoMusical>();
        while (resultSelect.next()) {
            // gera o objeto e adiciona à lista.
        }
        return tiposMusicais;
    }
}
Sua classe de serviços:
public class ServicosTipoMusical {

    public List<TipoMusical> recuperarTiposMusicais() throws SQLException {

        PersistenciaTipoMusical persistenciaTipoMusical = new PersistenciaTipoMusical();
        return persistenciaTipoMusical.recuperarTodos();
    }
}
E, na hora de montar sua interface:
public class InterfaceTiposMusicais extends JFrame {

    public InterfaceTiposMusicais() {

        try {

            UIManaget.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setResizable(false);

            ServicosTipoMusical servicosTipoMusical = new ServicosTipoMusical();
            List<TipoMusical> tiposMusicais = servicosTipoMusical.recuperarTiposMusicais();

            Container container = getContentPane();
            for (TipoMusical tipoMusical : tiposMusicais) {

                JButton buttonTipoMusical = new JButton(tipoMusical.getNome());
                buttonTipoMusical.addActionListener(new AcoesTipoMusical(tipoMusical));
                container.add(buttonTipoMusical);
            }
        }
        catch (SQLException errSQL) {
            JOptionPane.showMessageDialog(null, "Erro no BD: " + errSQL.getMessage());
        }
        catch (Exception err) {
            JOptionPane.showMessageDialog(null, "Erro qualquer: " + err.getMessage());
        }
    }

    private class AcoesTipoMusical implements ActionListener {

        private TipoMusical tipoMusical;
        public AcoesTipoMusical(TipoMusical tipoMusical) {
            this.tipoMusiscal = tipoMusical;
        }

        public void actionPerformed(ActionEvent event) {
            // Aqui você pode fazer um método para verificar qual o tipo musical e,
            // dependendo do que for, fazer determinada ação.
            JOptionPane.showMessageDialog(null, "Bem-vindo à tela de " + tipoMusical.getNome());
        }
    }
}

O que acha dessa solução?

S

Poxa :shock:, gostei da tua solução Nicolas Fernandes, valeu mesmo, vou tentar como você sugeriu.
Qualquer dúvida a mais eu volto aqui novamente.

Criado 2 de agosto de 2011
Ultima resposta 2 de ago. de 2011
Respostas 4
Participantes 2