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