Efectivamente, para obtener los nombres de las tablas de una base de datos, necesitas una clase Connection. Ésta tiene el método getMetaData(). Este método lo puedes ocupar tal cual, sin parámetros, y te retorna una clase DatabaseMetaData. A su vez, la clase DatabaseMetaData tiene un método getTables. Este método retorna una clase ResultSet, con la siguiente información:
1. TABLE_CAT String => table catalog (may be null)
2. TABLE_SCHEM String => table schema (may be null)
3. TABLE_NAME String => table name
4. TABLE_TYPE String => table type. Typical types are "TABLE", "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM".
5. REMARKS String => explanatory comment on the table
6. TYPE_CAT String => the types catalog (may be null)
7. TYPE_SCHEM String => the types schema (may be null)
8. TYPE_NAME String => type name (may be null)
9. SELF_REFERENCING_COL_NAME String => name of the designated "identifier" column of a typed table (may be null)
10. REF_GENERATION String => specifies how values in SELF_REFERENCING_COL_NAME are created. Values are "SYSTEM", "USER", "DERIVED". (may be null)
Este método se puede ocupar de la siguiente forma: getTables( null,null"%",""). Ojo, que no todos los motores de bases de datos entregan la misma información. Por experiencia, al menos retornarán hasta la sexta columna. Pero como tú sólo quieres conocer los nombres de las tablas, te basta con conocer la tercera columna.
Para mayor información acerca de la clase DatabaseMetaData, visita:
http://java.sun.com/javase/6/docs/api/java/sql/DatabaseMetaData.html