我想报告所售产品,但是当它显示在JTable中时,循环将被覆盖。也就是说,与其显示为:
JTable显示如下:
我见过一些类似的案例,但是没有一个可以帮助我解决这个问题。我是JAVA的初学者,如果有人可以帮助我避免这种覆盖,我将不胜感激。
主要:
package sistema.telas;
import static sistema.es.EntradaESaida.*;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import sistema.sgbd.BancoDeDados;
import sistema.entidade.RelatorioVenda;
public class RelatorioVendas {
//chama sua classe para fazer conexao com o banco
static Connection con = new BancoDeDados().getConnection();
public static void relatorio() throws IOException{
List<RelatorioVenda> relatorio = getLista();
String colunas[] = {"Nome", "Preço", "Quantidade", "Preço Total"};
String linhas[][] = new String[relatorio.size()][4];
for (int linha = 0; linha < relatorio.size(); linha++){
linhas[linha][0] = relatorio.get(linha).getNomeProduto();
linhas[linha][1] ="R$" + relatorio.get(linha).getPreco();
linhas[linha][2] = relatorio.get(linha).getQuantidade()+ "un";
linhas[linha][3] ="R$" + relatorio.get(linha).getPrecoTotal();
}
exibirTabela("Relatorio de Vendas", linhas, colunas, 150, 350);
}
public static List<RelatorioVenda> getLista() {
RelatorioVenda venda = new RelatorioVenda();
try {
List<RelatorioVenda> relatorioVendas = new ArrayList<RelatorioVenda>();
PreparedStatement stmt = con.prepareStatement("SELECT produto.nome, produto.preco, venda.quantidade_vendida, "+
"(venda.quantidade_vendida*produto.preco) as multiplicacao FROM produto, venda WHERE produto.codigo = venda.codigo_produto;");
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
venda.setNomeProduto(rs.getString("nome"));
venda.setPreco(rs.getFloat("preco"));
venda.setQuantidade(rs.getInt("quantidade_vendida"));
venda.setPrecoTotal(rs.getFloat("multiplicacao"));
// adicionando o objeto à lista
relatorioVendas.add(venda);
}
rs.close();
stmt.close();
return relatorioVendas;
} catch (SQLException e) {
msgErro("Erro ao carregar as tabelas venda e produto. ", "Relatorio de Vendas");
throw new RuntimeException(e);
}
}
}
构造函数:
package sistema.entidade;
public class RelatorioVenda {
private String nomeProduto;
private float preco;
private int quantidade;
private float precoTotal;
public RelatorioVenda() {
}
public RelatorioVenda(String nomeProduto, float preco, int quantidade,
float precoTotal) {
this();
this.nomeProduto = nomeProduto;
this.preco = preco;
this.quantidade = quantidade;
this.precoTotal = precoTotal;
}
public String getNomeProduto() {
return nomeProduto;
}
public void setNomeProduto(String nomeProduto) {
this.nomeProduto = nomeProduto;
}
public float getPreco() {
return preco;
}
public void setPreco(float preco) {
this.preco = preco;
}
public int getQuantidade() {
return quantidade;
}
public void setQuantidade(int quantidade) {
this.quantidade = quantidade;
}
public float getPrecoTotal() {
return precoTotal;
}
public void setPrecoTotal(float precoTotal) {
this.precoTotal = precoTotal;
}
@Override
public String toString() {
return String.format("%s - %.2f - %d - %.2f", nomeProduto,preco,quantidade,precoTotal);
}
}