java swing cambiar el tamaño de ImageIcon según jLabel

Soy un programador nuevo aquí y tengo algo que preguntar, tengo que buscar una imagen en mi GUI (y configurar la ruta de acceso también en el cuadro de texto) que se muestra en una etiqueta, pero la dimensión de la etiqueta se establece en 100,100 mientras que la imagen es mucho más grande, así que cuando lo abro / muestro en la etiqueta, se corta, ¿hay algún modo para que se redimensione automáticamente al tamaño de la etiqueta? a continuación se encuentra mi código lógico en el botón de navegación y en el cuadro de diálogo abierto, por favor, alguien me dice dónde me equivoco ...

public class ImagePath extends javax.swing.JFrame {
    private JPanel contentPane;

    JLabel jLabel1;
    String s2;
    File targetFile;
    BufferedImage targetImg;

    public ImagePath() {
        initComponents();
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

        JFileChooser jFileChooser1 = new JFileChooser();

        int state = jFileChooser1.showOpenDialog(new JFrame());

        jTextField1.setText("");
        if (state == JFileChooser.APPROVE_OPTION) {
            JOptionPane.showMessageDialog(new JFrame(), "hii");
            File file = jFileChooser1.getSelectedFile();
            s2 = file.toString();
            jTextField1.setText(s2);
            jLabel1 = new JLabel();
            jLabel1.setName(s2);
            jLabel1.setLocation(50, 50);
            jLabel1.setSize(300, 300);
            add(jLabel1);
            BufferedImage bi1;

            try {
                bi1 = ImageIO.read(file);
                ImageIcon icon1 = new ImageIcon(bi1);
                jLabel1.setIcon(icon1);

                Image img = icon1.getImage();
                ImageIcon icon = new ImageIcon(file.getPath());
                Image scaleImage = icon.getImage().getScaledInstance(28, 28, Image.SCALE_DEFAULT);

                repaint();
                pack();

            } catch (Exception e) {
                System.out.println(e);
            }
        } else if (state == JFileChooser.CANCEL_OPTION) {
            JOptionPane.showMessageDialog(new JFrame(), "Canceled");
        }

    }

}

Respuestas a la pregunta(2)

Su respuesta a la pregunta