[Resolvido] setSize Imagem

tem com mudar só a largura ou a altura de alguma imagem carregado por BufferedImage ?

Ninguem quis me ajudar então eu cacei a resposta em varios lugares e descobri como ajusta o tamanho do JFrame para caber a imagem e também, se a imagem for muito grande, ajustar a própria para caber dentro de um JFrame além de varias interações para pegar imagem da internet e colocar em um JLabel que está dentro de um JPanel que está dentro de um JFrame. Interação com o JFileChooser além de ajustar, como eu disse acima, ele seleciona apenas imagens e pastas para serem vizualizados. E muitas outras funções.

O código é esse:


import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
        
/*
 * @author Pixes
 */

class Janela extends JFrame{
    
     JLabel      lb_Endereco;
     JLabel      lb_Arquivo;
     JLabel      lb_Mensagem;
     JLabel      lb_NomeArquivo; 
     JButton     bt_Carregar; 
     JButton     bt_ir;
    
    JPanel pn_Imagem = new JPanel();
    JTextField tf_URL;
    JFileChooser Ch_novo;
    JFileChooser chooser = new JFileChooser();  

    int altura = 720;
    int largura = 1008;
    int larguraa = 1005;
    int alturaa = 625;

 public Janela() throws IOException{
    this.setSize(600, 450);
         {
            lb_Endereco = new JLabel("Insira a URL:");
            lb_Arquivo   = new JLabel("Arquivo interno:"); 
            lb_Mensagem  = new JLabel("Identificações ...");
            tf_URL = new JTextField(28);  
            lb_NomeArquivo = new JLabel("");
            bt_Carregar    = new JButton("Arquivo");
            pn_Imagem      = new JPanel ();
            bt_ir          = new JButton("Ir");

             JPanel painelNorte = new JPanel();
             JPanel Central = new JPanel();
             painelNorte.setLayout(new GridLayout(2,3));
             painelNorte.setBackground(Color.white);
             Central.setBackground(Color.blue);
             painelNorte.add(lb_Endereco);
             painelNorte.add(tf_URL);
             painelNorte.add(bt_ir);
             painelNorte.add(lb_Arquivo);
             painelNorte.add(lb_NomeArquivo);
             painelNorte.add(bt_Carregar);
             Central.add(pn_Imagem);

             lb_Mensagem.setBackground(Color.white);
             lb_Mensagem.setForeground(Color.red);

             this.setLayout(new BorderLayout());
             this.add("North", painelNorte);
             this.add("Center", Central);
             this.add("South", lb_Mensagem);
             
               bt_ir.addActionListener( new ActionListener() {  

                       @Override
                @SuppressWarnings("empty-statement")
                       public void actionPerformed(ActionEvent e) {
                           
                                  if(tf_URL.getText().trim().equals("")){
                       JOptionPane.showMessageDialog(null, "Escreva algo no endereço");
                                      
                                  }if(!tf_URL.getText().trim().equals("")){
                String valor = tf_URL.getText();    
                
                 BufferedImage image = null;
                
                   URL url = null;
                        try {
                            url = new URL(valor);
                        } catch (MalformedURLException ex) {
                            
                        }
                        try {
                            image = ImageIO.read(url);
                        } catch (IOException ex) {
                            
                        }
				int width = getWidth();  
				int height = getHeight();  
				int widthh = image.getWidth();  
				int heightt = image.getHeight();  
                           
				System.out.print("Nova imagem\n");
				System.out.print(" largura = " + widthh);
				System.out.print(" \n altura = " + heightt);
                                     
         if(widthh >= largura || heightt >= altura){
             Image imagem2;
             
				int largurah = -1; 
				int alturah = -1;
             
				System.out.print("\n imagem grande\n");

                           if(widthh >= largura){
                               System.out.print("redimensinado para, largura = " + larguraa + " \n");
                               
                               imagem2 =  image.getScaledInstance(larguraa, alturah, Image.SCALE_SMOOTH);
                               JLabel label1 = new JLabel(new ImageIcon(imagem2));
                            pn_Imagem.add(label1, BorderLayout.CENTER);
                               
                           }
                            if(heightt >= altura){
                                System.out.print("\n redimensinado para, altura = " + alturaa + " \n");
                            
                             imagem2 =   image.getScaledInstance(largurah, alturaa,  Image.SCALE_SMOOTH);
                                     
                            JLabel label1 = new JLabel(new ImageIcon(imagem2)); 
                            pn_Imagem.add(label1, BorderLayout.CENTER);
                           }
                    
                                else if(widthh >= largura && heightt >= altura){
                                 System.out.print("redimensinado para, largura = " + larguraa + " \n");
                                 System.out.print("\n redimensinado para, altura = " + alturaa + " \n");
                                 
                                 imagem2 =  image.getScaledInstance(larguraa, alturaa, Image.SCALE_SMOOTH);
                                 JLabel label1 = new JLabel(new ImageIcon(imagem2));
                            pn_Imagem.add(label1, BorderLayout.CENTER);
                                 
                                    }                 
                                 } 
         else{
                                 
            JLabel label1 = new JLabel(new ImageIcon(image));
            pn_Imagem.add(label1, BorderLayout.CENTER);
            lb_Mensagem.setText(" Essa é uma nova informação ");
            System.out.print(" \n imagem boa =D \n");
                                  }

    if(image.getWidth()>width){  
       width = image.getWidth();  
    }  
      
    if(image.getHeight()>height){  
       height = image.getHeight();  
    }  
      
    setSize(width,height);  
                                   }            
                                }
                           });	 

            bt_Carregar.addActionListener( new ActionListener() {
                       @Override
                       public void actionPerformed(ActionEvent e){
                
                  
                JFileChooser arquivo = new JFileChooser();
                arquivo.setDialogTitle("Escolha uma imagem");
                
               arquivo.setFileFilter(new javax.swing.filechooser.FileFilter(){
                        @Override
                public boolean accept(File f){
				return f.getName().toLowerCase().endsWith(".jpg") 
                     || f.isDirectory() 
                     ||  f.getName().toLowerCase().endsWith(".png")
                     ||  f.getName().toLowerCase().endsWith(".gif")
                     ||  f.getName().toLowerCase().endsWith(".jpeg");
            }
                    
                        @Override
            public String getDescription() {
        return "Arquivos de imagem (.jpg, .png, .gif, .JPEG)";
 
        }
        });
          int res = arquivo.showOpenDialog(null);
        
      if(res == JFileChooser.APPROVE_OPTION){
                        try {
    File arquivos = arquivo.getSelectedFile();  
    BufferedImage image =  ImageIO.read(arquivos);  
    int width = getWidth();  
    int height = getHeight();  
    int widthh = image.getWidth();  
    int heightt = image.getHeight();  
                           
       System.out.print("Nova imagem\n");
       System.out.print(" largura = " + widthh);
       System.out.print(" \n altura = " + heightt);
                                     
         if(widthh >= largura || heightt >= altura){
             
             Image imagem2;
             int largurah = -1; 
                int alturah = -1;
             
                System.out.print("\n imagem grande\n");
 
             if(widthh >= largura){
                 
                   imagem2 =  image.getScaledInstance(larguraa, alturah, Image.SCALE_SMOOTH);
                   JLabel label1 = new JLabel(new ImageIcon(imagem2));
                  pn_Imagem.add(label1, BorderLayout.CENTER);
                  System.out.print("redimensinado para, largura = " + larguraa + " \n");
             
           }
               if(heightt >= altura){
              
                  imagem2 =   image.getScaledInstance(largurah, alturaa,  Image.SCALE_SMOOTH);
                  JLabel label1 = new JLabel(new ImageIcon(imagem2));
                  pn_Imagem.add(label1, BorderLayout.CENTER);
                  System.out.print("\n redimensinado para, altura = " + alturaa + " \n");
                
                    }
    
              else if(widthh >= largura && heightt >= altura){
             
                 imagem2 =  image.getScaledInstance(larguraa, alturaa, Image.SCALE_SMOOTH);
                 JLabel label1 = new JLabel(new ImageIcon(imagem2));
                 pn_Imagem.add(label1, BorderLayout.CENTER);
                 System.out.print("redimensinado para, largura = " + larguraa + " \n");
                 System.out.print("\n redimensinado para, altura = " + alturaa + " \n");
                    } 
   
            lb_Mensagem.setText(" Essa é uma nova informação de grande ");
                                 }
    
         else{
                                 
            JLabel label1 = new JLabel(new ImageIcon(image));
            pn_Imagem.add(label1, BorderLayout.CENTER);
            //pn_Imagem.setVisible(true);
            lb_Mensagem.setText(" Essa é uma nova informação ");
            System.out.print(" \n imagem boa =D \n");
                                  }
    
    if(image.getWidth()>width){  
        width= image.getWidth();  
    }  
      
    if(image.getHeight()>height){  
       height = image.getHeight(); 
    }  
      
    setSize(width,height); 
            
                        } catch (IOException ex) {
                            System.out.print("Erro!");
                        }
            }else
                JOptionPane.showMessageDialog(null, "Voce nao selecionou nenhum arquivo."); 
                            
                 }
                });
            }
        }
    }
        
public class conta{
   public static void main(String argumentos[]) throws IOException{
      Janela jan  = new Janela();
      //jan.setSize(820,650);
      TratEventosJan trat = new TratEventosJan();
      jan.addWindowListener(trat);
      jan.show();
   }
}

class TratEventosJan extends WindowAdapter{
    @Override
   public void windowClosing(WindowEvent evento){
      System.exit(0);
   }
}

Obrigado.