Java считывает ImageIcon из JPanel и масштабирует его до размера Jpanel

#java #image #jpanel #scale

#java #изображение #jpanel #масштаб

Вопрос:

Нужна помощь в масштабировании изображения в JPanel, путь к которому вы не знаете. Итак, считайте изображение из JPanel, а затем масштабируйте изображение до размера JPanel.

Код до сих пор:

 // Get the components inside the JPanel (subjpanels)
Component[] total_grid_fields = centerpanel.getComponents();

// Loop trough the JPanels
for (int i = 0; i < total_grid_fields.length-1; i  ) {
    // Check if it is a Jpanel
    if(total_grid_fields[i] instanceof JPanel){
        JPanel gridField = ((JPanel)total_grid_fields[0]);

        // Get the width and height of the JPanel 
        int new_image_width = gridField.getWidth()-10;
        int new_image_heigth = gridField.getHeight()-10;

        // Get the components inside the JPanel
        Component[] gridlabel = gridField.getComponents();

        // Check if it is a JLabel
        if(gridlabel[0] instanceof JLabel){

            // Define a JLabel
            JLabel newgridlabel = ((JLabel)gridlabel[0]);

            // Get the placed ImageIcon
            ImageIcon placeimage = (ImageIcon) newgridlabel.getIcon();

            // Get the image
            Image image = placeimage.getImage();

            //  Scale the image
            Image newimg = image.getScaledInstance(new_image_width, new_image_heigth,  java.awt.Image.SCALE_SMOOTH); // scale it the smooth way  

            // add new scaled image to ImageIcon
            placeimage = new ImageIcon(newimg);

            //add ImageIcon to Jlabel
            img = new JLabel(placeimage);

            // add Jlabel to Jpanel
            newgridlabel.add(img);

            // repaint the JFrame
            frame.repaint();


        }
    }

}
  

Надеюсь, кто-нибудь может помочь…