es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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í:

https://i.stack.imgur.com/4z8J5.png

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;
        }

    }
}
Tags:  , ,

Answer

  1. Avatar for 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:

    person.addMouseListener(new MouseAdapter() {
        //...
        public void mouseClicked(MouseEvent e) {
            System.out.println(person.getToolTipText());
    
            // Crear un nuevo JLabel con el ícono X
            JLabel deleteIcon = new JLabel(new ImageIcon("ruta/al/ícono/x.png"));
            deleteIcon.setBounds(person.getX(), person.getY() + 100, 20, 20); // establecer posición y tamaño
    
            // Agregar el ícono de eliminación al JPanel
            panel.add(deleteIcon);
            panel.revalidate();
            panel.repaint();
    
            // Código para eliminar el usuario de la base de datos y JTable
            // ...
        }
    });
    

    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étodo setBounds(). Luego agregamos deleteIcon al panel, 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étodo mouseClicked() después de que deleteIcon se haya agregado al panel.

Comments are closed.