Cada vez que llamas a VisualizarDatos creas un nuevo JScrollPane, JTable y modelo y lo añades a la ventana... en la misma posición que el que habías añadido antes (CENTER). Estos JTables que vas añadiendo una y otra vez quedan uno encima de otro, es posible que el que acabas de añadir quede detrás del que tenías antes y no se vea.
También hay otro problema y es que si a una ventana que está visible le añades componentes nuevos, estos no se visualizan hasta que llames al método updateUI() (no vale repaint() ni otros, tiene que ser updateUI()).
El método correcto de hacer esto no es crear cada vez el JTable entero desde cero. Crea el JTable y añádelo en el constructor de la clase. El método VisualizarDatos() debería hacer algo como esto:
Código Java:
Ver originalvoid VisualizarDatos() {
// conexión y consulta a base de datos
TableModel modelo
= jTableQueInstanciasteEnElConstructor.
getModel(); // borrar los datos en el modelo
// metero en el modelo los datos que has leido de base de datos
y con eso vale. Modificando los datos en el modelo que está dentro del JTable, el JTable se actualiza él solito.
Se bueno.