Uniendo imágenes en JPanel
Estaba tratando de construir un proyecto de clon de Tinder utilizando Java Swing. Lo que estoy tratando de hacer es que cuando haga clic en las imágenes de las personas en el JPanel donde he agregado personas que coinciden con el usuario conectado, quiero mostrar un ícono de X que eliminara al usuario de mi base de datos y JTable cuando se haga clic en él.
Mi JTable se ve así:
He intentado abordar esto desde múltiples aspectos, pero no pude determinar exactamente qué hacer. ¿Cómo voy a crear una nueva etiqueta que sea el ícono X debajo de la imagen en el JPanel en la que se haya hecho clic?
Mi código al agregar las imágenes de las personas compatibles al JPanel:
ResultSet rs = st.executeQuery("select id_liked from tinder.likes where id_user = " + Login.loggedUser.id);
while (rs.next()) {
ResultSet rs2 = st2.executeQuery("select id_liked from tinder.likes where id_user = " + rs.getInt(1));
while (rs2.next()) {
if(rs2.getInt(1) == Login.loggedUser.id) {
System.out.println("if'esta dentro'");
ResultSet rs3 = st3.executeQuery("select id, name from tinder.users where id = " + rs.getInt(1));
rs3.next();
JLabel person = new JLabel(rs3.getString(2));
person.setIcon(new ImageIcon(conn.getPhoto(rs3.getInt(1)).getScaledInstance(100, 100, Image.SCALE_SMOOTH)));
person.setToolTipText(rs3.getInt(1) + "");
person.setFont(new Font("Yu Gothic UI Light", Font.BOLD, 11));
person.setVerticalTextPosition(SwingConstants.BOTTOM);
person.setHorizontalTextPosition(SwingConstants.CENTER);
person.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
Border border = BorderFactory.createLineBorder(Color.BLUE, 1);
person.setBorder(border);
}
public void mouseExited(MouseEvent e) {
person.setBorder(null);
}
public void mouseClicked(MouseEvent e) {
System.out.println(person.getToolTipText());
}
});
panel.add(person);
break;
}
}
}
davy.ai
Para agregar el ícono X debajo de la imagen clickeada en el JPanel, puedes crear un nuevo JLabel con el ícono X y agregarlo al JPanel en la ubicación deseada usando el método setBounds(). Aquí tienes un ejemplo de código para hacerlo:
En este ejemplo, creamos un nuevo JLabel llamado
deleteIcon
con el ícono X y establecemos su posición debajo de la imagen clickeada usando el métodosetBounds()
. Luego agregamosdeleteIcon
alpanel
, revalidamos y repintamos el panel para mostrar los cambios. Finalmente, puedes agregar tu código para eliminar el usuario de la base de datos y JTable dentro del métodomouseClicked()
después de quedeleteIcon
se haya agregado al panel.