Barra de rolagem no JLabel com imagem

Olá pessoal, estou com o seguinte problema: estou carregando uma imagem em um JLabel com um tamanho pré-determinado, ou seja, se ela for maior que o JLabel ela é redimensionada para o tamanho do JLabel, mas o que acontece é que pode ser que o “cara” queira a imagem no tamano original, então eu quero colocar uma barra de rolagem no JLabel, isso é possível?

Colocar uma barra de rolagem no JLabel não, mas colocar o seu JLabel dentro de um JScrollPane sim.

Referências:
http://java.sun.com/docs/books/tutorial/uiswing/components/scrollpane.html
http://java.sun.com/javase/6/docs/api/javax/swing/JScrollPane.html

Porque que a barra de rolagem não está aparecendo?

	public void montaJLabel() {
		painel = new JPanel();

		Icon img = new ImageIcon(getClass().getResource("radiografia.jpg"));

		lblTeste = new JLabel(img);
		lblTeste.setBackground(Color.cyan);
		lblTeste.setOpaque(true);

		painel.add(lblTeste);

		scroll = new JScrollPane();
		scroll.getViewport().setBorder(null);
		scroll.setViewportView(lblTeste);
		scroll.setSize(400,300);

		setContentPane(scroll);
	}

Acho que você deve inserir em vez de no JScrollPane. Não se esqueça também de definir o tamanho do JLabel com lblTeste.setSize(), de modo que extrapole o tamanho do JScrollPane.

O JLabel está tomando a área inteira do formulario.

	public void montaJLabel() {
		painel = new JPanel();

		Icon img = new ImageIcon(getClass().getResource("radiografia.jpg"));

		lblTeste = new JLabel(img);
		lblTeste.setBackground(Color.cyan);
		lblTeste.setOpaque(true);
                lblTeste.setBounds(10,10,500,500);

		add(lblTeste);

		scroll = new JScrollPane();
		scroll.getViewport().setBorder(null);
		scroll.setViewportView(lblTeste);
		scroll.setSize(400,300);

		setContentPane(scroll);
	}

Faça exatamente o que o roger_rf disse que deve funcionar. Veja:

	public void montaJLabel() {
		// o painel é que será adicionado
		painel = new JPanel();
		// logo, ele deve ter um tamanho maior do que o JScrollPane possa exibir
		painel.setPreferredSize(new Dimension(1500,1500));

		Icon img = new ImageIcon(getClass().getResource("radiografia.jpg"));

		lblTeste = new JLabel(img);
		lblTeste.setBackground(Color.cyan);
		lblTeste.setOpaque(true);

		// adiciono o JLabel no JPanel
		painel.add(lblTeste);

		scroll = new JScrollPane();
		// adiciono o JPanel no JScrollPane
		scroll.setViewportView(painel);

		setContentPane(scroll);
	}

Valeu rapaziada deu certinho, Abraços.
Só mais uma coisa, como eu faço para encerrar este tópico?

Não há procedimento específico para encerrar um tópico, a única recomendação é adicionar o tag “[RESOLVIDO]” ao título do tópico, para que os demais participantes saibam que a discussão já terminou.

Olá pessoal, houve um pequeno equivoco, na verdade não deu certo pq, eu quero adicionar a barra no própio painel e não no formulário, quando eu faço
setContentPane(scroll), a barra é adicionada no formulário (JFrame), e o fato é que o painel não tem este método e se eu utilizo o método painel.add(scroll) ocorre erro em tempo de execução.
:?: :?: :?:

Sei que o tópico é um tanto antigo mas vou responder porque pode ser útil para outras pessoas que passam pelo GUJ.

Eu também estava com esse mesmo problema e resolvi ele usando a sugestão do pessoal que postou acima. A unica diferença é que eu direcionei os scrolls nos meus panels. Abaixo está o trexo do meu código em que uso scroll nas imagens.

public class ZWindow extends JFrame implements ActionListener, AdjustmentListener {
	
	private JScrollPane scroll1, scroll2;
	private JPanel panel1, panel2;
	private ImageIcon image1, image2;
	private JToolBar toolBar;
	private JButton applayFilter, applayQuadTree, findImage;
	private JSlider tolerance;
	
	public ZWindow(){		
		super("ZImage");
		this.setSize(1010, 600);
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setLayout(null);
		
		this.applayFilter = new JButton("Aplicar Filtro");
		this.applayQuadTree = new JButton("Aplicar Quad-Tree");
		this.findImage = new JButton("Procurar...");		
		this.applayFilter.addActionListener(this);
		this.applayQuadTree.addActionListener(this);
		this.findImage.addActionListener(this);
		
		this.tolerance = new JSlider(0, 50);
		this.tolerance.setValue(10);
		
		this.toolBar = new JToolBar("Ferramentas");
		this.toolBar.setBounds(0, 0, 1000, 30);
		this.toolBar.setFloatable(false);
		this.add(toolBar);
		
		this.toolBar.add(this.applayFilter);
		this.toolBar.add(this.applayQuadTree);
		this.toolBar.add(this.tolerance);
		this.toolBar.addSeparator(new Dimension(50, 0));
		this.toolBar.add(new JLabel("Imagem:"));
		this.toolBar.add(new JTextField());
		this.toolBar.add(this.findImage);

		this.panel1 = new JPanel();
		this.panel2 = new JPanel();
		this.panel1.add(new JLabel("Image", JLabel.CENTER));
		this.panel2.add(new JLabel("Image", JLabel.CENTER));
		
		this.scroll1 = new JScrollPane(panel1);
		this.scroll2 = new JScrollPane(panel2);		
		this.scroll1.setViewportView(panel1);		
		this.scroll2.setViewportView(panel2);		
		this.scroll1.setBounds(0, 40, 500, 500);
		this.scroll2.setBounds(500, 40, 500, 500);		
		this.scroll1.getHorizontalScrollBar().addAdjustmentListener(this);
		this.scroll1.getVerticalScrollBar().addAdjustmentListener(this);
		this.scroll2.getHorizontalScrollBar().addAdjustmentListener(this);
		this.scroll2.getVerticalScrollBar().addAdjustmentListener(this);
		
		this.add(scroll1, BorderLayout.WEST);
		this.add(scroll2, BorderLayout.EAST);
		
		//TODO: Abre uma imagem de exemplo.
//		ImageIcon nativeImage = new ImageIcon(ClassLoader.getSystemResource("test.jpg"));
		ImageIcon nativeImage = new ImageIcon(ClassLoader.getSystemResource("Xianghua.jpg"));
		refreshImages(nativeImage, null);
	}

       //Resto da classe...
}

Espero ter ajudado!
Abraço! o/

E o método refreshImages:

	public void refreshImages(ImageIcon image1, ImageIcon image2){
		if(image1 != null){
			panel1.remove(0);
			panel1.add(new JLabel(image1, JLabel.CENTER));
			this.image1 = image1;
		}
		if(image2 != null){
			panel2.remove(0);
			panel2.add(new JLabel(image2, JLabel.CENTER));
			this.image2 = image2;
		}
		paintAll(getGraphics());
	}