Problema em Remover Componente / Repaint JPanel

Eu tenho um programa que adiciona / deleta “pacientes” em um banco de dados, e toda vez que o usuário deleta um registro , meu JPanel deveria atualizar e remover um JLabel ( jlabel customizado na classe Thumbnail ), porém ele não remove, mesmo ultilizando repaint(); revalidate(); updateUI(); . Alguém poderia me ajudar?

Segue os códigos utilizados :

Codigo que atualiza o JPanel (body) de outra classe (m2) , removendo tudo e adicionando denovo com a funçao tableCli();
onde ele depois abre a classe que foi atualizada.

Pacientes m2 = new Pacientes();
					
					m2.body.removeAll();
					
					m2.body.updateUI();
					
					m2.body.validate();
					m2.body.repaint();
					try {
						
						//m.f.revalidate();
						
						m2.tableCli();	
						
						m2.body.updateUI();
						
						m2.body.validate();
						m2.body.repaint();
						
						m2.main(null);
					} catch (NumberFormatException | SQLException | IOException e2) {
						// TODO Auto-generated catch block
						e2.printStackTrace();
					} catch (Exception e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}

					frame.setVisible(false);

Função que adiciona Jlabel para cada paciente recuperado do banco de dados no JPanel “body” (esta parte funciona pois quando eu inicio o programa, o JPanel está com todas as JLabels criadas no seu devido lugar.)

public static void tableCli() throws NumberFormatException, SQLException, IOException
	{
		try {
		int max = Integer.parseInt(ISQL.selectMaxId());
		 System.out.println("Codigo maximo - pacientes : "+max);
		 
		 String sql="select Nome from paciente;";
			
	     BD b = new BD();
	     b.getConnection();
		 PreparedStatement statement = b.connection.prepareStatement (sql);
		 ResultSet rs=statement.executeQuery();
	   	 String nam;
	   	 File imgPac;
		 for(int a =0;a<=max;a++)
		 {
			 rs.next();
			 nam=rs.getString("Nome");
			 
			 if(a >= nCli)
			 {
				 imgPac = new File("perfil\\"+nam+"_LargeP.png");
				 if(!imgPac.exists())
					 ISQL.imageDownloadPacientes(nam);
			 
			 try {
					Images.transform("perfil\\"+nam+"_LargeP.png", "perfil\\"+nam+"P.png", 50, 50);
				} catch (Exception e2) {
					// TODO Auto-generated catch block
					e2.printStackTrace();
				}
			 
			 System.out.println("Numero do loop atual : "+a+" ");
			 body.add(new Thumbnail("perfil\\"+nam+"P.png", x, y,50,50,nam,a));
	
			 body.revalidate();
			 body.repaint();
			 
			 if(x<570)
				 x+=100;
			 else
			 {
				 x=60;
				 y+=100;
				 
				 if(y>500)
				 {
					 body_y = y+100;
					 body.setPreferredSize(new Dimension(body_x,body_y));
				 }
			 }
			 nCli++;
			 }
		 }
		}
		catch(Exception e3){
			
		}
	}

Me desculpe se estiver confuso rsrs

athoslive geralmente os métodos removeAll() e repaint() já deveriam resolver o teu problema. Agora te pergunto, por que você não utilizar AbstractTableModel? Acho inclusive que a visualização poderia ficar até mais legal.