Faço assim para preencher um JLabel com a imagem:
lblImagem.setIcon(new ImageIcon(img.getScaledInstance(lblImagem.getWidth(),lblImagem.getHeight(), Image.SCALE_DEFAULT)));
O comportamento é o seguinte:
Quando a imagem é maior que o JLabel, a imagem é diminuída para ficar do tamanho do JLabel, mas por outro lado, quando a imagem é maior que o JLabel, a imagem é aumentada para se ajustar ao JLabel e ela fica distorcida.
E quando a imagem é maior que o JLabel, se a imagem for bem alta e não tão larga, ela se expande pros dois lados ficando distorcida, tem como expandir até atingir a altura ou largura máxima do JLabel?
Como posso fazer para quando for menor, permanecer o tamanho original da imagem?