Semplicemente ti riscrivi il modello della tabella a tuo piacimento 
Ti faccio un esempio: Una persona che ha un indirizzo, quindi una classe persona che contiene una classe indirizzo (tanto così per associare due classi)
Address.java
codice:
public class Address {
private String street;
private int number;
public Address(String street, int number) {
this.street = street;
this.number = number;
}
public int getNumber() {
return number;
}
public String getStreet() {
return street;
}
// riscrivo il metodo toString per poter visualizzare poi l'oggetto nella JTable
@Override
public String toString() {
return this.street + " " + this.number;
}
}
Person.java
codice:
public class Person {
private String name;
private String surname;
private Address address;
public Person(String name, String surname, Address address) {
this.name = name;
this.surname = surname;
this.address = address;
}
public Address getAddress() {
return address;
}
public String getName() {
return name;
}
public String getSurname() {
return surname;
}
}
Ora, ti crei il modello della tabella a piacimento, CustomizedTableModel.java
codice:
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class CustomizedTableModel extends AbstractTableModel{
public List<Person> people;
public CustomizedTableModel(List<Person> people) {
this.people = people;
}
@Override
public String getColumnName(int column) {
String columName = new String();
switch(column){
case 0:
columName = "Nome";
break;
case 1:
columName = "Cognome";
break;
case 2:
columName = "Indirizzo";
break;
}
return columName;
}
@Override
public int getRowCount() {
return this.people.size();
}
@Override
public int getColumnCount() {
return 3;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Person person = this.people.get(rowIndex);
Object value = new Object();
switch(columnIndex){
case 0:
value = person.getName();
break;
case 1:
value = person.getSurname();
break;
case 2:
value = person.getAddress();
break;
}
return value;
}
}
Ora semplicemente se vuoi visualizzare queste persone e il relativo indirizzo basta fare così
Nella tua interfaccia grafica:
codice:
// crei la tabella
JTable table = new JTable();
// creo una lista di persone
List<Person> people = new ArrayList<Person>();
// popolo la lista
people.add(new Person("Nome1", "Cognome1", new Address("Via Test", 1)));
people.add(new Person("Nome2", "Cognome2", new Address("Via Test", 2)));
people.add(new Person("Nome3", "Cognome3", new Address("Via Test", 3)));
// creo il modello "personalizzato" per la JTable
CustomizedTableModel model = new CustomizedTableModel(people);
// imposto il modello alla JTable table
table.setModel(model);
L'output è come quello nell'immagine allegata 
Saluti