Olá galera,
Preciso de uma ajuda, após vários estudos com o JTable eu consegui colocar os valores no modelo, porém quando vou utilizar o Banco de dados esses valores não aparecem, o que preciso fazer?!
Estou com 2 classes do JTable que são: TabelaInsercao e ModeloTabela.
Códigos:
TabelaInserção:
import javax.swing.table.AbstractTableModel;
import java.util.*;
public class TabelaInsercao extends AbstractTableModel{
String nomes[] = {"Cod_Item","Nome_Serviço","Preço","Quantidade"};
static List<ModeloTabela> lista = new ArrayList<ModeloTabela>();
ModeloTabela mt = new ModeloTabela();
ArrayList<ModeloTabela> lin;
public Object getValueAt(int lin, int coluna) {
mt = lista.get(lin);
switch(coluna) {
case 0:
return mt.getCodItem();
case 1:
return mt.getNomeServiço();
case 2:
return mt.getValor();
case 3:
return mt.getTotal();
default:
throw new IndexOutOfBoundsException("Fora dos limites!!!");
}
}
@Override
public int getColumnCount() {
// TODO Auto-generated method stub
return nomes.length;
}
@Override
public int getRowCount() {
// TODO Auto-generated method stub
return lista.size();
}
public String getColumnName(int n) {
return nomes[n];
}
public void init() {
mt.setCodItem(1);
lista.add(mt);
}
public boolean isCellEditable(int linha, int coluna) {
if(coluna == 0)
return false;
else if(coluna == 1)
return false;
else if(coluna == 2)
return false;
return true;
}
}
Modelo Tabela: get´s e set´s
public class ModeloTabela {
int c_item,quantidade;
String nome;
float preco;
public int getCodItem() {
return c_item;
}
public String getNomeServiço() {
return nome;
}
public float getValor() {
return preco;
}
public int getTotal() {
return quantidade;
}
public void setCodItem(int cI) {
c_item = cI;
}
public void setNomeServiço(String n) {
nome = n;
}
public void setValor(float f) {
preco = f;
}
public void setTotal(int q) {
quantidade = q;
}
}
método do Banco de dados:
public void selecionarServiço() {
Statement comando;
ModeloTabela mt = new ModeloTabela();
try {
comando = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
resultado = comando.executeQuery("Select cod_Serviço, descriçao,valor from tab01Serviço where cod_serviço = " + cod_servico);
while(resultado.next()) {
mt.setCodItem(resultado.getInt("cod_Serviço"));
mt.setNomeServiço(resultado.getString("descriçao"));
mt.setValor(resultado.getFloat("valor"));
TabelaInsercao.lista.add(mt);
System.out.println("CodServiço: " + resultado.getInt("cod_Serviço"));
System.out.println("Descrição: " + resultado.getString("descriçao"));
System.out.println("Valor: " + resultado.getFloat("valor"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
o código da JTable na tela:
modelo = new TabelaInsercao();
for(int i = 0; i < 4; i++) {
modelo.getColumnName(i);
}
modelo.init();
JTable tabela = new JTable();
tabela.setModel(modelo);
JPanel tabelaPanel = new JPanel();
JScrollPane painel = new JScrollPane(tabela);
JButton inserirPedidos = new JButton("Inserir Pedidos");
inserirPedidos.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String texto = texto03.getText();
new Selecionar(texto);
}
});
tabelaPanel.add(inserirPedidos);
tabelaPanel.add(painel);
tabelaPanel.setOpaque(false);
tabelaPanel.setBounds(290,300,480,180);
tela.add(tabelaPanel);
abraço,