Você está na página 1de 7

JAVA: Criando JTable e Removendo linhas JAVA: Exceptions, mostrando descrio da exceo

JAVA : JTable Implementada


Neste Exemplo teremos duas Classes, uma que implementa o modelo da JTable estudada no tutorial: http://www.guj.com.br/java.tutorial.artigo.147.1.guj , e a outra que responsavel por criar e preencher os dados buscados via banco de dados. Estou colocando mais um post aqui sobre JTable pois existe muitos que tem duvida de como trabalhar com esta swing. 1 Classe JTableModel:
package myPck; import java.util.ArrayList; import java.util.Iterator; import javax.swing.table.AbstractTableModel; /** * Classe Responsvel por definir o modelo da JTable * Foi utilizado o tipo ArrayList para o atributo linhas * pois no definido qual tamanho total de linhas podendo * ser alterada em tempo de execuo(remover ou incluir). * Obs.: Este cdigo foi implementado juntamente com os comentrios * do site www.guj.com.br pelo autor Bruno Rios Lima * @author Marcelo Alves */ public class JTableModel extends AbstractTableModel { private ArrayList linhas; private String[] colunas; public JTableModel(ArrayList dados,String[] colunas){ setLinhas(dados); setColunas(colunas); }

//Retorna o numero de colunas public int getColumnCount(){ return getColunas().length; } //Retorna o numero de linhas public int getRowCount(){ return getLinhas().size(); } //Obtem o valor da linhas e coluna public Object getValueAt(int rowIndex, int columnIndex){ //Recebe a linha, passando por cast para String[] String[] linha = (String[])getLinhas().get(rowIndex); //Retorna o objeto na posio de columnIndex return linha[columnIndex]; } //Seta valor da linha e coluna public void setValueAt(Object value,int rowIndex, int columnIndex){ String[] linha = (String[])getLinhas().get(rowIndex); //Altera o contedo da linha na posio do indice columnIndex linha[columnIndex] = (String)value; //Dispara o evento da celula alterada fireTableCellUpdated(rowIndex, columnIndex); } //Adiciona nova linha public void addRow(String[] dadosLinha){ getLinhas().add(dadosLinha); //Informa ao JTable que ouve linhas incluidas no modelo //Como os dados so adicionados no final pega o tamanho total das linhas //menos 1 para obter a linha incluida. int linha = getLinhas().size() -1; fireTableRowsInserted(linha,linha); } //Remove linha public boolean removeRow(String val, int col){ //obtem o iterator Iterator i = getLinhas().iterator();

//Guarda as linhas percorridas int linha = 0; //Faz um loop enquando obtiver dados while(i.hasNext()){ //Obtem as colunas da linha atual String[] linhaCorrente = (String[])i.next(); linha++; //Compara o valor da linha atual na coluna e valor //informado por parametro if(linhaCorrente[col].equals(val)){ getLinhas().remove(linha); //informa a JTable que houve dados deletados //passando a linha removida fireTableRowsDeleted(linha,linha); return true; } } //Caso no encontre o valor return false; } //Retorna o nome da coluna //getColumnName[col] retorna na posio do indice! public String getColumnName(int col){ return getColunas()[col]; } public ArrayList getLinhas(){ return linhas; } public String[] getColunas(){ return colunas; } public void setLinhas(ArrayList dados){ linhas = dados; } public void setColunas(String[] dados){

colunas = dados; } } 2 Classe JTableCreate: package myPck; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Types; import java.util.ArrayList; import javax.swing.JTable; /** * Classe responsvel por criar e definir o modelo * de JTable * Alm das funes de preenchimento dos dados na tabela * buscandos via banco * @author Marcelo Alves */ public class JTableCreate { private JTable jTable; private JTableModel modelo; /** * Construtor recebe os parametros das linhas e colunas * e execulta o metodo createJTable * @param linhas * @param colunas */ public JTableCreate(ArrayList linhas, String[] colunas){ createJTable(linhas,colunas); } /** * Define o modelo e cria jTable indicando o modelo criado * @param linhas * @param colunas */

public void createJTable(ArrayList linhas, String[] colunas){ modelo = new JTableModel(linhas,colunas); jTable = new JTable(modelo); } /** * Responsvel por preencher a jTable com dados buscados via * Banco. Dentro do lao for utiliza-se um switch para verificar * os dados de dados buscado no banco. * @param rs * @throws SQLException */ public void popularJTable(ResultSet rs)throws SQLException{ //Obtem os Meta dados do resultset ResultSetMetaData rsmd = rs.getMetaData(); /** * Cria a Array de Strings definindo o tamanho com o total de linhas retornada pela consulta */ String[] linhaNova = new String[rsmd.getColumnCount()]; //Enquanto existir dados while(rs.next()){ for(int i=0; i < modelo.getColumnCount(); i++){ switch (rsmd.getColumnType(i + 1)) { case Types.INTEGER: linhaNova[i] = +rs.getInt(i + 1); break; case Types.VARCHAR: linhaNova[i] = rs.getString(i + 1); break; } } modelo.addRow(linhaNova); } } /** * Retorna {@link JTable}

* @return jTable */ public JTable getJTable(){ return jTable; } /** * Altera jTable * @param jTable */ public void setJTable(JTable jTable){ this.jTable = jTable; } } Voc pode utilizar o tutorial passado juntamente com estas classes, claro que dever ser feitas alguma alteraes principalmente o acesso a um Banco de Dados.

Seja o primeiro a gostar disso post.

This entry was posted on dezembro 6, 2007 at 2:25 pm and is filed under JAVA. Voc pode acompanhar qualquer resposta para esta entrada atravs do feed RSS 2.0. Voc pode deixar uma resposta, ou trackback do seu prprio site.

4 Respostas para JAVA : JTable Implementada


1. Fbio Disse:
fevereiro 9, 2009 s 1:46 pm | Responder

Oi, achei muito bom esse artigo! Mais tenho algumas duvida referentes ao tamanho das colunas pois quero que a minha tabelas fique com as colunas cada uma de um tamanho diferente e se possivel aumente e diminuan dinamicamente. Mais ja vai esta de bom tamanho se eu conseguir colocalas do tamanho que eu quero! Ento se poder me ajudar ficarei grato! Tenha uma boa semana! Fbio Neri 2. ma lvesinfo Disse:
fevereiro 9, 2009 s 7:31 pm | Responder

Poise quando fiz este exemplo justamente estava com este problema. Mas assim que conseguir achar a soluo te passo.. e obrigado pela visita Desculpe a desatualizao do blog. Esta semana j inicio novas postagens! 3. phrix Disse:
abril 6, 2009 s 8:04 pm | Responder

Ol estou lendo seu tutorial porm no estou conseguindo aplica-lo pois estou comeando agora com java, tenho uma classe que possui uma janela e outra que conecta o banco na classe da janela tenho um botao que

chama a classe que conecta o banco que no final mostra os dados com System.out.println(rs.getString(1) + + rs.getString(2)); como adaptaria isso para utilizar a JTable mostrada ? Valeu 4. malvesinfo Disse:
abril 8, 2009 s 9:48 pm | Responder

phrix, Ao criar a classe JTableCreate, chamar o mtodo popularJTable passando o ResultSet criado na hora que voc executou a SQL, quando voc instanciar JTableCreate pode passar como null as linhas e passar as colunas desejadas. Qualquer duvida s postar aqui!!!; []s! Marcelo Alves

Deixe uma resposta

Tema: Kubrick. Blog no WordPress.com. Entradas (RSS) e Comentrios (RSS).

Você também pode gostar