Mam taki kod:

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;


public class JT extends JFrame implements ActionListener {
	
	JTextField tImie, tNazwisko, tUlica, tNr, tMiasto, tKod, tMail, tRok, tTel;
	JButton bDodaj, bUsun, bZapisz, bWczytaj, bZamknij;
	JTable tab;
	DefaultTableModel tm;

	public JT()
	{
		super("Książka telefoniczna");
		
		String [] cols = {"Imię", "Nazwisko", "Ulica", "Nr domu", "Miasto", "Kod pocztowy", "E-mail", "Data urodzenia", "Telefon"};
		
		tm = new DefaultTableModel();
		tab = new JTable(tm);
		
		for (int i = 0; i < cols.length; i++)
			tm.addColumn(cols[i]);
		
		tab.setPreferredScrollableViewportSize(new Dimension(1000, 100));
		JScrollPane pane = new JScrollPane(tab);
		add(pane, BorderLayout.NORTH);
		
		tImie = new JTextField(15);
		tNazwisko = new JTextField(15);
		tUlica = new JTextField(15);
		tNr = new JTextField(15);
		tMiasto = new JTextField(15);
		tKod = new JTextField(15);
		tMail = new JTextField(15);
		tRok = new JTextField(15);
		tTel = new JTextField(15);

		bDodaj = new JButton("Dodaj");
		bDodaj.addActionListener(this);
		bUsun = new JButton("Usuń");
		bUsun.addActionListener(this);
		bZapisz = new JButton("Zapisz do pliku");
		bZapisz.addActionListener(this);
		bWczytaj = new JButton("Odczytaj z pliku");
		bWczytaj.addActionListener(this);
		bZamknij = new JButton("Zamknij");
		bZamknij.addActionListener(this);
		
		JPanel p = new JPanel();
		p.setLayout(new GridLayout(9, 2));
		p.add(new JLabel("Imię:"));
		p.add(tImie);
		p.add(new JLabel("Nazwisko:"));
		p.add(tNazwisko);
		p.add(new JLabel("Ulica:"));
		p.add(tUlica);
		p.add(new JLabel("Nr domu:"));
		p.add(tNr);
		p.add(new JLabel("Miasto:"));
		p.add(tMiasto);
		p.add(new JLabel("Kod pocztowy:"));
		p.add(tKod);
		p.add(new JLabel("E-mail:"));
		p.add(tMail);
		p.add(new JLabel("Data urodzenia:"));
		p.add(tRok);
		p.add(new JLabel("Telefon:"));
		p.add(tTel);
		
		add(p, BorderLayout.CENTER);
		
		JPanel p2 = new JPanel();
		p2.setLayout(new FlowLayout());
		p2.add(bDodaj);
		p2.add(bUsun);
		p2.add(bZapisz);
		p2.add(bWczytaj);
		p2.add(bZamknij);
		
		add(p2, BorderLayout.SOUTH);
		
		
		
		pack();
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		setVisible(true);
	}

	public void actionPerformed(ActionEvent ae)
	{
		String str = ae.getActionCommand();
		
		if (str.equals("Dodaj"))
		{
			Object linijka[] = new Object[9];
			linijka[0] = tImie.getText(); 
			linijka[1] = tNazwisko.getText(); 
			linijka[2] = tUlica.getText(); 
			linijka[3] = tNr.getText(); 
			linijka[4] = tMiasto.getText(); 
			linijka[5] = tKod.getText(); 
			linijka[6] = tMail.getText(); 
			linijka[7] = tRok.getText(); 
			linijka[8] = tTel.getText();
			
			for (int i = 0; i < linijka.length; i++)
				if (linijka[i].equals(""))
					return;
			
			if (!czyIstnieje(tm, linijka))
				return;
			
			tm.addRow(linijka);	
		}
		
		else if (str.equals("Usuń"))
		{
			if (tab.getSelectedRow() == -1)
				return;
			
			tm.removeRow(tab.getSelectedRow());
		}
		
		else if (str.equals("Zamknij"))
			this.dispose();
		
	}
	
/*	public boolean porownajWiersze(Object [] w1, Object [] w2)
	{
		if (w1.length != w2.length)
			return false;
		
		for (int i = 0; i < w1.length; i++)
			if (!w1[i].equals(w2[i]))
				return false;
		
		return true;
	}
*/	
	public Object [] wierszTabeli(DefaultTableModel dtm, int r)
	{
		Object wiersz [] = new Object [dtm.getColumnCount()];
		
		for (int i = 0; i < dtm.getColumnCount(); i++)
			wiersz[i] = dtm.getValueAt(r, i);
		
		return wiersz;
	}
	
	public boolean czyIstnieje(DefaultTableModel dtm, Object [] r)
	{
		Object w [] = new Object [dtm.getColumnCount()];
		
		for (int i = 0; i < dtm.getRowCount(); i++)
		{
			w = wierszTabeli(tm, i);
			
			for (int j = 0; j < dtm.getColumnCount(); j++)
				if (w[j] != r[j])
					return false;
		}
			
		return true;
	}
	
	public static void main(String[] args) 
	{
		new JT();
	}
}

W programie wprowadzono ograniczenie, żeby nie dało się dodać rekordu, gdy jest jakieś pole tekstowe puste oraz gdy dany rekord już istnieje. Jednak jak wpisuję dwa różne rekordy, to nie chce się dodać. Czemu?

Np. Wpisuję:
Michał
P

001
dodaje się
A teraz wpisuję:
Maria
CP

002
I nie chce się dodać
Czemu?

Edit:
Ok już sobie poradziłem. Zmodyfikowałem funkcję:

public boolean czyNieIstnieje(DefaultTableModel dtm, Object [] r)
{
	Object w [] = new Object [dtm.getColumnCount()];
		
	for (int i = 0; i < dtm.getRowCount(); i++)
	{
		w = wierszTabeli(tm, i);
		
		if (porownajWiersze(w, r))
			return false;
	}
				
	return true;
}