循环覆盖列表

时间:2019-06-21 00:12:32

标签: java jtable

我想报告所售产品,但是当它显示在JTable中时,循环将被覆盖。也就是说,与其显示为:

instead of appearing this

JTable显示如下:

show this

我见过一些类似的案例,但是没有一个可以帮助我解决这个问题。我是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);
    }
}

0 个答案:

没有答案