J'ai le code suivant, qui me permet de supprimer une ligne de la droite Jtable avec un clic. Cela fonctionne bien pour toutes les lignes, sauf lorsqu'il ne reste qu'une seule ligne. BTW, désolé pour la plupart des noms étant en portugais, c'est ma langue maternelle. Voici les images montrant avant et après je clique sur la dernière rangée du tableau. Il met à jour le total, mais la ligne reste. Pour tous les autres cas, cela fonctionne parfaitement.Dernière ligne dans un Jtable ne peut pas être supprimé
Screenshot:
private void jtbSelecionadosMouseClicked(java.awt.event.MouseEvent evt)
{
int x = jtbSelecionados.rowAtPoint(evt.getPoint());
if (x >= 0)
{
String nomeProduto = (String)jtbSelecionados.getModel().getValueAt(x, 0);
for (int i = 0; i < itensVenda.size();i++)
{
if (itensVenda.get(i).getNomeProduto().equals(nomeProduto))
{
if(itensVenda.get(i).getQtd() > 1)
{
valorTotal -= (itensVenda.get(i).getPreco()/itensVenda.get(i).getQtd());
double precototal = itensVenda.get(i).getPreco();
double unit = precototal/itensVenda.get(i).getQtd();
System.out.println("Unidade: "+unit+"\nTotal: "+precototal);
itensVenda.get(i).setPreco(itensVenda.get(i).getPreco() - (itensVenda.get(i).getPreco()/itensVenda.get(i).getQtd()));
itensVenda.get(i).setQtd(itensVenda.get(i).getQtd() - 1);
recarregarTabela();
}
else if(itensVenda.get(i).getQtd() <= 1)
{
valorTotal -= itensVenda.get(i).getPreco()/itensVenda.get(i).getQtd();
itensVenda.remove(i);
recarregarTabela();
}
}
}
}
fonction
qui remet à zéro la table avec les nouvelles informations:
private void recarregarTabela()
{
if (itensVenda.size() == 0)
{
dtm.getDataVector().removeAllElements();
dtm.setRowCount(0);
lblTotal.setText("Total: R$" + String.valueOf(valorTotal));
}
else
{
dtm.getDataVector().removeAllElements();
dtm.setRowCount(0);
for (Item item : itensVenda)
{
Object[] vetor = new Object[3];
vetor[0] = item.getNomeProduto();
vetor[1] = item.getQtd();
vetor[2] = String.format("%.2f", item.getPreco());
System.out.println(item.getPreco());
dtm.addRow(vetor);
}
lblTotal.setText("Total: R$" + String.valueOf(valorTotal));
}
}
Voir: https://stackoverflow.com/questions/38227729/how-to-delete-multiple-rows-from-jtable- database-at-a-time/38228994 # 38228994 pour un exemple qui vous permet de supprimer une (ou plusieurs) lignes sélectionnées. – camickr
Je peux supprimer des lignes, juste quand il n'y a plus qu'une seule ligne –
Ensuite, vous ne pouvez pas supprimer les lignes !!! La dernière rangée n'est pas différente de la première rangée, sauf que votre logique la traite différemment, alors corrigez votre logique. Vous avez reçu un exemple de travail. Apprenez de l'exemple. – camickr