Problemas para redimensionar a imagem!

E ai galera do guj blz ?

estou com problemas para redimensionar a imagem em JAI … help ae

package janela;

import java.awt.Dimension;
import java.awt.Image;
import java.awt.image.BufferedImage;

import javax.media.jai.JAI;
import javax.media.jai.PlanarImage;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

import com.sun.media.jai.widget.DisplayJAI;

public class PanelImagem {

	JScrollPane spane = new JScrollPane();
	private JLabel limagem = new JLabel();
	private PlanarImage principal;
	private DisplayJAI dj;
	ImageIcon icon;
	BufferedImage b;
	
	public PanelImagem(String img) {
		
		principal = JAI.create("fileload", img);
		dj = new DisplayJAI(principal);
		dj.setPreferredSize(new Dimension(660, 660));
		limagem.add(dj);
		icon = new ImageIcon(img);
		icon = ajustaTam(icon);

	}

	public ImageIcon getLayout() {
		return icon;
	}

	public DisplayJAI setImagem(String img) {

		PlanarImage aux = JAI.create("fileload", img);
		b = aux.getAsBufferedImage();
		icon = new ImageIcon(img);
		icon = ajustaTam(icon);
		principal = aux;
		aux.dispose();
		dj.setPreferredSize(new Dimension(800, 800));
		dj.set(principal);
		dj.getHeight();
		return dj;
	}

	public ImageIcon ajustaTam(ImageIcon imagem) {
		
		ImageIcon novaImagem = null;
		int flag=0;
		
		if(imagem.getIconHeight() < imagem.getIconWidth()){
			flag = 1;
			//System.out.println("maior largura");
		}
		else
			if(imagem.getIconHeight() >= imagem.getIconWidth()){
				flag = 2;
				//System.out.println("maior altura");
			}
		switch(flag) {
			case 0:
				novaImagem = new ImageIcon(imagem.getImage()); // imagem com tamanho original
			break;
			case 1:
				if(imagem.getIconWidth() > 660)
				{
					//float u = (float) 1.23;
				    //System.out.println("valor"+u);
				    System.out.println("maior altura");
				    float y = (float) imagem.getIconWidth()/660;
				    System.out.println(y+"="+imagem.getIconWidth()+"/ 660");
					float x = (float) imagem.getIconHeight()/y;
					System.out.println(x+"="+imagem.getIconHeight()+"/"+y);
					System.out.println("\n resultado:"+y+"tamanho x 660"+",y"+x);
					novaImagem = new ImageIcon(
							imagem.getImage().getScaledInstance(660,(int) x,Image.SCALE_DEFAULT)
							); // imagem com o novo tamanho
				 }
				else
					novaImagem = new ImageIcon(imagem.getImage());// imagem com tamanho original
			break;
			case 2:
				if(imagem.getIconHeight() > 660)
				{
					System.out.println("maior altura");						                		
				    float y = (float) imagem.getIconHeight()/660;
				    System.out.println(y+"="+imagem.getIconHeight()+"/ 660");
					float x =(float) imagem.getIconWidth()/y;
					System.out.println(x+"="+imagem.getIconWidth()+"/"+y);
					System.out.println("\n resultado:"+y+"tamanho x"+x+",y 660");
					novaImagem=new ImageIcon(
							imagem.getImage().getScaledInstance((int) x,660,Image.SCALE_DEFAULT)
						); // imagem com o novo tamanho
					}
				else
					novaImagem = new ImageIcon(imagem.getImage());// imagem com tamanho original
			break;
		}
		return novaImagem;
	}

}