Java Tips: Operações com JTable parte 3

Posted on dezembro 18, 2012. Filed under: Java, Tips | Tags:, |

Introdução

Vamos mostrar mais algumas dicas interessantes da class JTable do Java. Outras dicas do JTable podem ser encontradas nos posts anteriores:

Java Tips: Operações com JTable parte 1
Java Tips: Operações com JTable parte 2

  1. Manipulando o conteúdo da tabela
  2. 
    // inserindo dados em uma tabela com 4 colunas
    DefaultTableModel tableModel = (DefaultTableModel) minhaTabela.getModel();
    tableModel.insertRow(tableModel.getRowCount(), new Object[]{ "Douglas", "Villanacci", "douglas.pasqua@gmail.com", "11111111"});
    tableModel.insertRow(tableModel.getRowCount(), new Object[]{ "Fulano", "da Silva", "fulano.silva@blalbla.com", "11111111"});
    
    // limpando todo o conteúdo da tabela
    DefaultTableModel tableModel = (DefaultTableModel) minhaTabela.getModel();
    tableModel.getDataVector().removeAllElements();
    minhaTabela.updateUI();
    
    // alterando o valor de determinada linha e coluna da tabela: Linha (1), Coluna (1)
    // linha e coluna começam com valor 0
    TableModel model = (TableModel) minhaTabela.getModel();
    model.setValueAt("Josefina", 0, 0);
    
    // obtendo valor de determinado campo na tabela, informando Linha(2) e Coluna(1)
    // linha e coluna começam com valor 0
    TableModel model = (TableModel) minhaTabela.getModel();
    String value = (String) model.getValueAt(1, 0);
    System.out.println(value);
    
  3. Tratando evento de mudança de dados na tabela
  4. Caso você tenha campos editáveis na sua tabela, você pode em algum momento querer executar alguma ação quando um valor de um campo da sua tabela sofrer alterações.

    Para que você possa controlar as mudanças realizadas na edição da sua tabela, é necessário monitorar o evento de alteração através do listener TableModelListener.

    // monitorando o evento através de TableModelListener
    minhaTabela.getModel().addTableModelListener(new TableModelListener() {
        @Override
        public void tableChanged(TableModelEvent e) {
            int linha = e.getFirstRow();
            int coluna = e.getColumn();
    
            TableModel model = (TableModel) e.getSource();
    
            System.out.println("Você alterou a linha " + linha + ", coluna " + coluna);
            System.out.println("Valor da célula alterada: " + model.getValueAt(linha, coluna));
        }
    });
    
  5. Usando ComboBox (JcomboBox) nas células da sua tabela
  6. É possível associar um JComboBox (caixa de seleção) à uma coluna da sua tabela. É uma forma de facilitar a vida do usuário. Ao invés do usuário digitar um valor para a célula, ele simplesmente escolhe um valor dentre vários, através de uma caixa de seleção. Recurso bem interessante e elegante.

    No exemplo abaixo, vamos associar um combo box para a quinta coluna da tabela. (Lembre-se que a numeração das colunas começa por 0). O usuário poderá escolher entre “Masculino” ou “Feminino”:

    // Obtendo à referencia para a 5 coluna da tabela
    TableColumn column = minhaTabela.getColumnModel().getColumn(4);
    // Criando o ComboBox
    JComboBox comboSexo = new JComboBox();
    // Definindo os valores para o ComboBox
    DefaultComboBoxModel comboModel = new DefaultComboBoxModel(new String[] { "Masculino", "Feminino" });
    comboSexo.setModel(comboModel);
    // Associando o ComboBox para a coluna
    column.setCellEditor(new DefaultCellEditor(comboSexo));
    

    Veja ilustração:

    ScreenShot026

Make a Comment

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Liked it here?
Why not try sites on the blogroll...

%d blogueiros gostam disto: