Che addRow() richiede un Object[] lo so pure io... mi riferivo al metodo select().

Quindi ricapitolando: tu hai un JPanel che contiene il bottone e che genera un evento; questo codice deve riempire la tabella. Per effettuare questa operazione richiami select() che è in un'altra classe e che deve riempire la tabella in JPanel.

Al momento della creazione di questo oggetto (della classe con select()) che parametri passi al costruttore?
Potresti passare il tuo table model e lasciare che sia poi select() a riempirlo. Oppure nella classe del JPanel tieni un indice che viene incrementato e che indichi l'indice della riga del db da leggere.
Oppure ancora, potresti continuare a ciclare in select() e riempire Object[][] con tutte le righe; ma ogni riga sarà un nuovo Object[].

Ecco un esempio... ogni array Object[] corrisponde ad una riga, ed ovviamente l'array che ritorna dal tuo select() deve essere a 2 dimensioni (una matrice).

codice:
class Prova {
  public static void main(String[] args) {
    Object[] riga1 = {"Uno","Due","Tre"};
    Object[] riga2 = {"Quattro","Cinque","Sei"};
    Object[] riga3 = {"Sette","Otto","Nove"};
    
    Object[][] array = {riga1, riga2, riga3};
    
    // Questa la lettura
    for(int i=0; i<array.length; i++) {
     // Ogni elemento di array corrisponde ad una riga
      Object[] temp = array[i];
      for(int j=0; j<temp.length; j++) {
        System.out.println(temp[j]);
      }
      System.out.println();
    }
  }
}