« JAVA: Criando JTable e Removendo linhas JAVA: Exceptions, mostrando descrição da exceção »
JAVA : JTable Implementada Neste Exemplo teremos duas Classes, uma uma que implementa o modelo da JTable estudada 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 post aqui sobre JTable pois existe existe muitos que tem duvida de como trabalhar com esta swing. 1 – Classe Classe JTableMode JTableModel: l: package myPck; import java.util.ArrayList; import java.util.Iterator; import javax.swing.table.AbstractTableModel;
/** * Cl Clas asse se Re Resp spon onsá sáve vell por de defin finir ir o mo mode delo lo da JT JTab able le * Fo Foii ut util iliz izad ado o o ti tipo po Ar Arra rayL yLis istt pa para ra o at atri ribu buto to li linh nhas as * po pois is nã não o é de defi fini nido do qu qual al ta tama manh nho o to tota tall de li linh nhas as po pode dend ndo o * se serr al alte tera rada da em te temp mpo o de ex exec ecuç ução ão(r (rem emov over er ou in incl clui uir) r).. * Ob Obs. s.:: Es Este te có códi digo go fo foii im impl plem emen enta tado do ju junta ntame ment ntee co com m os co come ment ntár ários ios * do si site te ww www. w.gu guj. j.co com. m.br br pe pelo lo au auto torr Br Brun uno o Ri Rios os Li Lima ma * @author Mar Marcel celo o Alv Alves es */ public class JTableModel extends AbstractTableModel { private ArrayList linhas linhas;; private String[] colunas 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 posição 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 conteúdo da linha na posição 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 são 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 não encontre o valor return false;
} //Retorna o nome da coluna //getColumnName[col] retorna na posição 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 responsável por criar e definir o modelo * de JTable * Além das funções 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); } /** * Responsável por preencher a jTable com dados buscados via * Banco. Dentro do laço 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 alterações 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 através do feed RSS 2.0. Você pode deixar uma resposta, ou trackback do seu próprio site.
4 Respostas para “JAVA : JTable Implementada” 1.
Fábio 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! Então se poder me ajudar ficarei grato! Tenha uma boa semana! Fábio 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 solução te passo.. e obrigado pela visita… Desculpe a desatualização do blog. Esta semana já inicio novas postagens!
3.
phrix Disse: abril 6, 2009 às 8:04 pm | Responder
Olá estou lendo seu tutorial porém não estou conseguindo aplica-lo pois estou começando 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 método 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 Comentários (RSS).