Boa noite galera, to com um dúvida aqui, como eu faço para listar dados utilizando JTable dentro de uma frame???
os dados que quero listar são --> " Nome" , “Idade” , e “Telefone”… dentro da classe ClienteNegocio que criei existe o método listarContatos(), entao eu quero utilizar esse para listar dentro do JTable…Postem códigos ai com soluçãos, por que estou dentro de um projeto como programador e meu tempo ta meio curto!!!
Não sei se entendi teu problema,
Você quer preencher uma Jtable ?
Se for isso se for isso, vou passar um exemplo de um Jtable preenchido com um Model e uma Jtable dentro de um Jframe usando Netbeans!!!
Primeiro tenho esse Model de Jtable
Cria essa classe!!
[code]import java.sql.ResultSet;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;
import com.mysql.jdbc.ResultSetMetaData;
import java.sql.PreparedStatement;
public class GeneralTableModel {
//Metodo retorna um TableModel,
public TableModel getTableModel(PreparedStatement select, String[] columnames) {
final String[] names = columnames;
try {
ResultSet rs = select.executeQuery();
ResultSetMetaData rsmeta = (ResultSetMetaData) rs.getMetaData();
ncolumns = rsmeta.getColumnCount();
list = new ArrayList<Object>();
while (rs.next()) {
for (int i = 1; i <= ncolumns; i++) {
list.add(rs.getObject(i));
}
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Erro Desconhecido:" + e.getMessage());
e.printStackTrace();
}
final Object[][] data = new Object[list.size() / ncolumns][ncolumns];
for (int j = 0; j < list.size(); j = j + ncolumns) {
for (int i = 0; i < ncolumns; i++) {
if (list.get(j + i) == null) {
data[j / ncolumns][i] = "-";
} else {
data[j / ncolumns][i] = list.get(j + i);
}
}
}
dataModel = new AbstractTableModel() {
public int getColumnCount() {
return names.length;
}
public int getRowCount() {
return data.length;
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
@Override
public String getColumnName(int column) {
return names[column];
}
@Override
public Class getColumnClass(int col) {
return getValueAt(0, col).getClass();
}
public boolean isCellEditable(int row, int col) {
return false;
}
public void setValueAt(Object aValue, int row, int column) {
data[row][column] = aValue;
}
};
return dataModel;
}
private TableModel dataModel;
private ArrayList<Object> list;
private int ncolumns;
}
[/code]
Depois de criado o jtable dentro do meu código personalisado da Jtable tem esse código
jXTable1 = new org.jdesktop.swingx.JXTable();
try {
Connection con = (Connection) ConnectionFactory.getConnection();
java.sql.PreparedStatement stm = con.prepareStatement("SELECT `rg`,`nome`,`cargo_funcionario`, `cc_cod`,`data_adm` FROM `funcionario`");
String[] col_names = {"RG","Nome","Cargo","CC","Data Adm"};
jXTable1.setModel(new zf.inventario.Factory.GeneralTableModel().getTableModel(stm,col_names)
);
}catch(Exception e){
e.printStackTrace();
}
jXTable1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jXTable1MouseClicked(evt);
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
jXTable1MouseReleased(evt);
}
});
jScrollPane2.setViewportView(jXTable1);
Só trocar os select aí para o seu banco … qualquer dúvida…
Legal…Mas só tem como criar JTable para listar meus dados do Banco de Dados na mão pura???
To usando o NetBeans tbm, junto com seu visual Editor, como eu faço para criar utilizando ele??? Utiliando o vizual Editor??
Crie seu próprio TableModel.
Essa é a solução. Não se acostume a usar editor drag’n drop para tudo (até porque esse não é o princípio de Java - esses editores surgiram para ajudar, não para fazer tudo). Se é isso que você quer, vá para Delphi.
Como assim na mão pura rs…
você só tem que copiar o codigo que te passei e mudar o select pro teu banco rsrs
essa sua linha de código aqui tbm serve para o Postgres??
por que nao estou usando o Mysql…
Esqueci de avisar que estou usando mysql, não sei se funciona, ACREDITO que não , este bd deve ter o teu proprio driver!!
Existe a classe “genérica” que funciona em qualquer banco. Ela é a java.sql.ResultSetMetaData.