Estou tentando implementar o evento do botão de Adicionar, cuja intenção é adicionar o serviço na tabela com código, descrição, qtde, valUnitario e total.
Fiz um array para percorrer as linhas da tabela e verificar se o serviço já existe na mesma, se existir incrementa a qtde. Minha dúvida é como fazer um addRow para um Array
Fiz uma TableModel chamada TableModelItensServico segue abaixo o código.
public class TableModelItensServico extends AbstractTableModel
{
private List<ItensServico> dados = new ArrayList<>();
private String[] colunas =
{
"CÓDIGO", "SERVIÇO", "QTDE", "VALOR", "TOTAL"
};
@Override
public String getColumnName(int coluna)
{
return colunas[coluna];
}
@Override
public int getRowCount()
{
return dados.size();
}
@Override
public int getColumnCount()
{
return colunas.length;
}
@Override
public Object getValueAt(int linha, int coluna)
{
switch (coluna)
{
case 0:
return dados.get(linha).getCodigo();
case 1:
return dados.get(linha).getServico().getDescricao();
case 2:
return dados.get(linha).getQuantidade();
case 3:
return dados.get(linha).getPrecounitario();
case 4:
return dados.get(linha).getTotal();
}
return null;
}
public void addRow(ItensServico is)
{
this.dados.add(is);
this.fireTableDataChanged();
}
public void removeRow(int linha)
{
this.dados.remove(linha);
this.fireTableRowsDeleted(linha, linha);
}
}
E o código abaixo é para adicionar na tabela
private void insereItem()
{
if (txtQtde.getValue().equals(0))
{
JOptionPane.showMessageDialog(this, "Informe uma quantidade para adicionar o serviço na tabela", "Atenção", JOptionPane.ERROR_MESSAGE);
txtQtde.setBorder(BorderFactory.createLineBorder(Color.RED));
} else
{
try
{
txtQtde.setBorder(BorderFactory.createLineBorder(Color.GRAY));
String valUni = txtValor.getText().replace("R$", "").replace(" ", "").replace(".", "").replace(",", ".");
double vtt = Double.parseDouble(valUni) * Integer.parseInt(txtQtde.getValue().toString());
String total = String.valueOf(vtt);
if (total.substring(total.lastIndexOf(".") + 1).length() < 2)
{
total = total + "0";
}
String unitario = txtValor.getText().replace("R$", "").replace(" ", "").replace(".", "").replace(",", ".");
if (unitario.substring(unitario.lastIndexOf(".") + 1).length() < 2)
{
unitario = unitario + "0";
}
ItensServico is = new ItensServico();
is.setCodigo(Integer.parseInt(txtCodigoServico.getText()));
is.setServico((Servico) cbbServico.getSelectedItem());
is.setQuantidade(Integer.parseInt(txtQtde.getValue().toString()));
is.setPrecounitario(Double.parseDouble(unitario));
is.setTotal(Double.parseDouble(total));
boolean ok = true;
for (int i = 0; i < itens.size(); i++)
{
if (itens.get(i).getServico().getCodigo() == is.getServico().getCodigo())
{
itens.get(i).setQuantidade(itens.get(i).getQuantidade() + Integer.parseInt(txtQtde.getValue().toString()));
itens.get(i).setTotal(itens.get(i).getQuantidade() * itens.get(i).getPrecounitario());
ok = false;
}
}
if (ok)
{
itens.add(is);
}
tableModel.addRowArray(itens);
double valorSubTotal = vtt + Double.parseDouble(txtSubTotal.getText().replace("R$", "").replace(" ", "").replace(".", "").replace(",", "."));
setValorSubTotal(valorSubTotal);
atualizaSoma();
} catch (Exception e)
{
}
}
}
