Usa i tag code, così il codice è più leggibile:
codice:
public class GuiScontrino extends JFrame implements ActionListener{
private JScrollPane sp1;
private JTable table;
private JPanel center;
public GuiScontrino(){ ......}
public void actionPerformed(ActionEvent e){
System.out.println("primoaction");
ArrayList<Pietanza> perTable=new ArrayList<Pietanza>(GuiInizio.mpartenza.piet.values());
String nomeColonne[]={" ", "Codice", "Quantità", "Descrizione", "Costo unitario", "Totale"};
int numRighe=GuiInizio.mpartenza.piet.size(); //numero pietanze=numero righe
int numColonne=6; //numero colonne
Object[][] dati = new Object[numRighe][numColonne];
int i=0;
int j=0;
Object bottone=e.getSource();
if(bottone==primi)
{
for(Pietanza c:perTable){
if(c.getCategoria().toString().equalsIgnoreCase("PRIMI"))
{
dati [i][j+1]=c.getCodice();
dati [i][j+3]=c.getDescrizione();
dati [i][j+4]=c.getCosto();
i++;
}
}
}
else if(bottone==secondi)
{
for(Pietanza c:perTable){
if(c.getCategoria().toString().equalsIgnoreCase("SECONDI"))
{
dati [i][j+1]=c.getCodice();
dati [i][j+3]=c.getDescrizione();
dati [i][j+4]=c.getCosto();
i++;
}
}
ecc...ecc...
table = new JTable(dati,nomeColonne);
sp1=new JScrollPane(table);
center=new JPanel();
center.add(sp1);
this.add(center,BorderLayout.CENTER);
this.validate();
}
E' difficile capire qual è il problema, visto che non hai postato tutto il codice, ma posso azzardare un'ipotesi:
penso che il problema sia dato dal fatto che non vai a modificare j nei codice.. usi la stessa j sia nei primi che nei secondi...