Galera alguem tem um tutorial de como ultilizar JTable e TableModel’s tb, naum encontrei nada de fundamento no Google se puderem dar essa força …
Agradeço!
Galera alguem tem um tutorial de como ultilizar JTable e TableModel’s tb, naum encontrei nada de fundamento no Google se puderem dar essa força …
Agradeço!
http://www.guj.com.br/posts/list/15/199067.java#1001295
http://code.google.com/p/markutils/
tem outros varios topicos muito interessantes sobre isso aqui no guj
Olá, guisantogui!
Tudo bem?
Na minha assinatura, tem uns posts relativos à JTables/TableModels!
Procure lá, e tenho certeza que vai sanar sua dúvida!
Qualquer dúvida, poste aqui que vamos te ajudar!
Abraços
cara Jtable é muito discutida aqui no guj…
só procurar!!!
Eh q tipo legal, mas sempre q eu seto um JTable eu preciso criar uma classe TableModel ou não, e como eu vou colocar os dados do BD nessa JTable?
To com problemas nisso entendem?
[quote=guisantogui]Eh q tipo legal, mas sempre q eu seto um JTable eu preciso criar uma classe TableModel ou não, e como eu vou colocar os dados do BD nessa JTable?
To com problemas nisso entendem?[/quote]
O TableModel é justamente para controlar isso!
É ele quem dá as instruções à JTable para desenhar:
A table faz as seguintes perguntas, basicamente, ao TableModel:
E por aí vai!
Dá uma olhada na construção de TableModels, e vai entender o que tô falando!
Qualquer dúvida, continue postando!
Abraços!
[quote=Nicolas Fernandes][quote=guisantogui]Eh q tipo legal, mas sempre q eu seto um JTable eu preciso criar uma classe TableModel ou não, e como eu vou colocar os dados do BD nessa JTable?
To com problemas nisso entendem?[/quote]
O TableModel é justamente para controlar isso!
É ele quem dá as instruções à JTable para desenhar:
A table faz as seguintes perguntas, basicamente, ao TableModel:
E por aí vai!
Dá uma olhada na construção de TableModels, e vai entender o que tô falando!
Qualquer dúvida, continue postando!
Abraços![/quote]
Acho que estou começando a entender isso, no seguinte construtor, poderia me dizer o que devo passar nos pares de cochetes (arrays)
TableModel(Object [][], Object [])
vlw!
[quote=guisantogui]
Acho que estou começando a entender isso, no seguinte construtor, poderia me dizer o que devo passar nos pares de cochetes (arrays)
TableModel(Object [][], Object [])
vlw![/quote]
Bom, aqui vai um modelo simples de um TableModel para você começar a ter idéia:
public class ClientesTableModel extends AbstractTableModel {
// Lista de controle dos meus objetos.
private List<Cliente> clientes = null;
// Minhas colunas da tabela
private final static int columnNome = 0;
private final static int columnEmail = 1;
// Passo um ArrayList com os objetos que quero mostrar como parâmetro.
public ClientesTableModel( List<Cliente> clientes ) {
if ( clientes != null ) this.clientes = clientes;
else this.clientes = new ArrayList<Cliente>();
}
// Eu, normalmente, sobrescrevo esses métodos:
// Retornar número de linhas
//--------------------------------------------------------------------------
@Override
public int getRowCount() {
return this.clientes.size();
}
// Retornar número de colunas
//--------------------------------------------------------------------------
@Override
public int getColumnCount() {
return 2;
}
// Retornar o nome de uma coluna específica
//--------------------------------------------------------------------------
@Override
public String getColumnName(int col) {
if ( col == columnNome ) return "Cliente";
if ( col == columnEmail ) return "E-mail";
return "";
}
// Retornar a classe de uma coluna específica
//--------------------------------------------------------------------------
@Override
public Class getColumnClass(int col) {
return String.class;
}
// Retornar valor de uma célula específica
//--------------------------------------------------------------------------
@Override
public Object getValueAt(int row, int col) {
Cliente anCliente = this.clientes.get( row );
if ( col == colunaNome ) return anCliente.getNome();
if ( col == columnEmail ) return anCliente.getEmail();
return "";
}
// Retornar se uma célula específica é editável ou não
//--------------------------------------------------------------------------
@Override
public boolean isCellEditable(int row, int col) {
return false;
}
}
Para jogar na Table:
List<Cliente> clientes = new ArrayList<Cliente>();
clientes.add( new Cliente( 1, "Maria", "maria@maria.com") );
clientes.add( new Cliente( 2, "José", "jose@jose.com") );
JTable tableClientes = new JTable();
tableClientes.setModel( new ClientesTableModel( clientes ) );
Testa isso pra ter uma idéia!
Abraços!
[quote=Nicolas Fernandes][quote=guisantogui]
Acho que estou começando a entender isso, no seguinte construtor, poderia me dizer o que devo passar nos pares de cochetes (arrays)
TableModel(Object [][], Object [])
vlw![/quote]
Bom, aqui vai um modelo simples de um TableModel para você começar a ter idéia:
public class ClientesTableModel extends AbstractTableModel {
// Lista de controle dos meus objetos.
private List<Cliente> clientes = null;
// Minhas colunas da tabela
private final static int columnNome = 0;
private final static int columnEmail = 1;
// Passo um ArrayList com os objetos que quero mostrar como parâmetro.
public ClientesTableModel( List<Cliente> clientes ) {
if ( clientes != null ) this.clientes = clientes;
else this.clientes = new ArrayList<Cliente>();
}
// Eu, normalmente, sobrescrevo esses métodos:
// Retornar número de linhas
//--------------------------------------------------------------------------
@Override
public int getRowCount() {
return this.clientes.size();
}
// Retornar número de colunas
//--------------------------------------------------------------------------
@Override
public int getColumnCount() {
return 2;
}
// Retornar o nome de uma coluna específica
//--------------------------------------------------------------------------
@Override
public String getColumnName(int col) {
if ( col == columnNome ) return "Cliente";
if ( col == columnEmail ) return "E-mail";
return "";
}
// Retornar a classe de uma coluna específica
//--------------------------------------------------------------------------
@Override
public Class getColumnClass(int col) {
return String.class;
}
// Retornar valor de uma célula específica
//--------------------------------------------------------------------------
@Override
public Object getValueAt(int row, int col) {
Cliente anCliente = this.clientes.get( row );
if ( col == colunaNome ) return anCliente.getNome();
if ( col == columnEmail ) return anCliente.getEmail();
return "";
}
// Retornar se uma célula específica é editável ou não
//--------------------------------------------------------------------------
@Override
public boolean isCellEditable(int row, int col) {
return false;
}
}
Para jogar na Table:
List<Cliente> clientes = new ArrayList<Cliente>();
clientes.add( new Cliente( 1, "Maria", "maria@maria.com") );
clientes.add( new Cliente( 2, "José", "jose@jose.com") );
JTable tableClientes = new JTable();
tableClientes.setModel( new ClientesTableModel( clientes ) );
Testa isso pra ter uma idéia!
Abraços![/quote]
Por que sobrescreve os metodos os feitos pelo JAVA naum ficariam mais bem estruturados?
Nãao…
guisantogui, o TableModel é uma classe que provê tratamento aos dados do usuário, dando ao mesmo uma representação na tela(a nossa famosa View) uma representação da camada de negócios do nosso sistema, em outras palavras, é uma classe de controle.
Quando o JAVA(Leia-se a API) lhe fornece uma implementação padrão, esta é para lhe atender até certo ponto, onde você cedo ou tarde, precisará modificá-la para atender um requisito do seu sistema.Nunca é demais salientar, que muitas das implementações padrões foram feitas ainda nos tempos de java 1.3 e apenas melhoradas/adaptadas para não ficarem MUITO para trás.Cá entre nós, se tivéssemos que usar tudo conforme a API(ainda mais em Swing), seriamos programadores orientados a componentes, não a objetos… muitas implementações acabam ficando no meio do caminho, com o passar do tempo no desenvolvimento das JDK´s, veja por exemplo, Vector e ArrayList.