JButton e GridLayout

Galera, coloquei uma imagem num ImageIcon e depois criei um JButton com essa imagem, depois eu joguei os JButtons numa GridLayout:

//importar imagem
padrao = new ImageIcon(“E:/Outros/UFS/JAVA/Eclipse/teste/Memoria/src/img/img.gif”);

//jogar a imagem no botão
for (int i = 0; i < botao.length; i++) {
botao = new JButton(padrao);
}

//criar um GridLayout
panel.setLayout(new GridLayout (4,5,2,2));

//jogar os botões no GridLayout
for (int i = 0; i < botao.length; i++){
panel.add(botao);
}

As imagens aparecem na GridLayout, só que eu criei o JFrame com 600x520 e as imagens aparecem na grade só que cordadas, pois o tamanho da imagem é 275x300.
Eis a minhas dúvidas:
como alterar o tamanho da imagem?
existe outra solução para eu colocar imagens na grade sem ser através do JButton ?

ImageIcon minhaImagem = new ImageIcon("foto.png");

int largura=50;
int altura = 50;

minhaImagem.setImage(minhaImagem.getImage().getScaledInstance(largura, altura, 100));
//Redimensiona a Imagem

//voce pode colocar imagem utilizando um JLabel
JLabel lbImagem = new JLabel();

lbImagem.setIcon(minhaImagem);

Espero que seja útil

Ok, funcionou direitinho.
Obrigado.

getScaledInstance(50, 50, 100);
nessa assinatura ele recebe altura, largura e qual outro parâmetro?

o outro é qualidade de escalonamento da imagem