Como colocar uma imagem em um jpanel ou jlabel

Bom senhores. Boa tarde.

Estou com uma duvida e ja venho pesquisando na net e axo coisas parecidas com o que eu to precisando, porem eu nao estou conseguindo implementar.

então vamos la a minha duvida:

Tenho um jpanel(inicialmente), digamos com um tamanho de 350 x 200. onde eu queria colocar uma imagem gerada a partir de um Robot que tenho pra bater uma foto da tela.

eu sei que se eu usar um jLabel eu uso a propriedade icon dele, porem eu nao sei fazer isso tambem via codigo…

mais um detalhe, quando eu coloco a img pelo jLabel usando a interface, ele coloca a img por inteira em tamanho real dentro do label 350x200… ou seja… ele nao fica na quela “escala” ja predeterminada.

alguem ai poderia me dar uma luz e um exemplo?

eis os codigos:

[....]

      Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
      Robot robot = new Robot();
      BufferedImage imge = robot.createScreenCapture(new Rectangle(0, 22, 1366,690));
      ImageIO.write(imge, "JPG", new File("/home/rildomar/Área de trabalho/foto1.jpg"));

[....]

Esse codigo aqui representa o meu JFrame que eu desejaria setar as config dele logo de cara… assim que roda o sistema.

se alguem tiver alguma duvida, pode falar :smiley:

[code]public static void main(String args[]) {
/* Set the Nimbus look and feel /
//
/
If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if (“Nimbus”.equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(painel.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(painel.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(painel.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(painel.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//

    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {

        public void run() {
            
           
                new painel().setVisible(true);
           
            
        }
    });
    
     try {
                Formulário f = new Formulário();
                BufferedImage b = f.baterFoto(); 
                Image im = (Image)b;
                ImageIcon ic = new ImageIcon("/home/rildomar/foto1.jpg");
                JLabel l = new JLabel(ic);
                ScreenTela.setLayout(new BorderLayout());
                ScreenTela.add(l,BorderLayout.CENTER);
                
                
                 } catch (Exception ex) {
                Logger.getLogger(painel.class.getName()).log(Level.SEVERE, null, ex);
            }
}
[/code]

uso o imageIO.write pra me certificar que eu to capturando mesmo a tela =]

bom, mais voltando ao foco, alguem ai poderia ajudar?

ja tentei de tudo :stuck_out_tongue:

simples …

ImageIcon image = new ImageIcon(getClass().getResource("/imagens/imagem.jpg"); //aqui pegando imagem de um package
JLabel label = new JLabel(image);
JPanel panel = new JPanel();
panel.add(label);

de uma estudada em componentes Swing pq isso é muito simples de fazer e tem mais de 1milhao de perguntas aqui no forum sobre isso…
pesquise no forum antes de postar.

de uma olhada aqui no sistema q fiz usando Swing: www.iguanasistemas.com.br

t+ e boa sorte.

é pq eu tentei de todas as formas tentar add isso ai, porem sem sucesso…

se usasse o jLabel com o icon, ele funciona, porem nao sei fazer ele redimensionar a imagem para o tamanho fixo do jLabel…

se uso o JPanel, ele nao funciona com o add…

mais vou dar uma olhada… se alguem mais estiver interessado em postar mais algumas dicas! por favor! fique a vontade!

Fernandopaiva, eu tentei aqui implementar isso que voce me deu… porem nao estou conseguindo.

eis o codigo:

esse é do formulário:

      Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
      Robot robot = new Robot();
      BufferedImage imge = robot.createScreenCapture(new Rectangle(0, 22, 1366,690));
      ImageIO.write(imge, "JPG", new File("/home/rildomar/Área de trabalho/foto1.jpg"));
      setImg(imge);
      return imge;

esse é da minha pagina do swing:

[code]
public void run() {

                Formulário f = new Formulário();
            try {
                BufferedImage b = f.baterFoto();
            } catch (Exception ex) {
                Logger.getLogger(painel.class.getName()).log(Level.SEVERE, null, ex);
            }
                new painel().setVisible(true);
           
            
        }
    });
    
     try {
               
                ImageIcon image = new ImageIcon(getClass().getResource("/home/rildomar/foto1.jpg"); //aqui pegando imagem de um package  
                JLabel label = new JLabel(image);  
                JPanel panel = new JPanel();  
                panel.add(label);
                ScreenTela.setLayout(new BorderLayout());
                ScreenTela.add(panel,BorderLayout.CENTER);
                
                    
                 } catch (Exception ex) {
                Logger.getLogger(painel.class.getName()).log(Level.SEVERE, null, ex);
            }
}[/code]

onde o “ScreenTela” é o nome que dei pra o meu jPanel do form.

Estou com o mesmo problema, já procurei e achei muitas respostas sobre isso! mas não consegui implementar.

Aqui está o meu código:

import java.awt.EventQueue;

public class Principal extends JFrame
{

	private final JPanel contentPane;
	private final JTextField enderecoLocal;
	private final JTextField loginLocal;
	private final JTextField enderecoRemoto;
	private final JTextField bancoRemoto;
	private final JTextField loginRemoto;
	private final JPasswordField senhaLocal;
	private final JPasswordField senhaRemoto;

	public static void main(String[] args)
	{
		EventQueue.invokeLater(new Runnable()
		{
			@Override
			public void run()
			{
				try
				{
					Principal frame = new Principal();
					frame.setVisible(true);
				}
				catch (Exception e)
				{
					e.printStackTrace();
				}
			}
		});
	}

	public Principal()
	{
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 515, 322);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		SpringLayout sl_contentPane = new SpringLayout();
		contentPane.setLayout(sl_contentPane);

		JLabel lblEndereo = new JLabel("Endere\u00E7o");
		sl_contentPane.putConstraint(SpringLayout.WEST, lblEndereo, 10, SpringLayout.WEST, contentPane);

		contentPane.add(lblEndereo);

		enderecoLocal = new JTextField();
		sl_contentPane.putConstraint(SpringLayout.WEST, enderecoLocal, 88, SpringLayout.WEST, contentPane);
		sl_contentPane.putConstraint(SpringLayout.EAST, enderecoLocal, -256, SpringLayout.EAST, contentPane);
		sl_contentPane.putConstraint(SpringLayout.EAST, lblEndereo, -10, SpringLayout.WEST, enderecoLocal);
		sl_contentPane.putConstraint(SpringLayout.NORTH, enderecoLocal, 0, SpringLayout.NORTH, lblEndereo);
		contentPane.add(enderecoLocal);
		enderecoLocal.setColumns(10);

		JLabel ExENDERECOLOCAL = new JLabel("Ex: localhost");
		sl_contentPane.putConstraint(SpringLayout.NORTH, ExENDERECOLOCAL, 6, SpringLayout.SOUTH, enderecoLocal);
		sl_contentPane.putConstraint(SpringLayout.WEST, ExENDERECOLOCAL, 0, SpringLayout.WEST, enderecoLocal);
		sl_contentPane.putConstraint(SpringLayout.EAST, ExENDERECOLOCAL, 203, SpringLayout.WEST, contentPane);
		contentPane.add(ExENDERECOLOCAL);

		JLabel lblLogin = new JLabel("Login");
		sl_contentPane.putConstraint(SpringLayout.WEST, lblLogin, 0, SpringLayout.WEST, lblEndereo);
		sl_contentPane.putConstraint(SpringLayout.EAST, lblLogin, 56, SpringLayout.WEST, contentPane);
		contentPane.add(lblLogin);

		loginLocal = new JTextField();
		sl_contentPane.putConstraint(SpringLayout.NORTH, lblLogin, 2, SpringLayout.NORTH, loginLocal);
		sl_contentPane.putConstraint(SpringLayout.NORTH, loginLocal, 6, SpringLayout.SOUTH, ExENDERECOLOCAL);
		sl_contentPane.putConstraint(SpringLayout.WEST, loginLocal, 0, SpringLayout.WEST, enderecoLocal);
		sl_contentPane.putConstraint(SpringLayout.EAST, loginLocal, 241, SpringLayout.WEST, contentPane);
		loginLocal.setColumns(10);
		contentPane.add(loginLocal);

		JLabel lblSenha = new JLabel("Senha");
		sl_contentPane.putConstraint(SpringLayout.NORTH, lblSenha, 6, SpringLayout.SOUTH, lblLogin);
		sl_contentPane.putConstraint(SpringLayout.WEST, lblSenha, 0, SpringLayout.WEST, lblEndereo);
		sl_contentPane.putConstraint(SpringLayout.EAST, lblSenha, 56, SpringLayout.WEST, contentPane);
		contentPane.add(lblSenha);

		JLabel lblRemoto = new JLabel("BANCO DE ORIGEM");
		sl_contentPane.putConstraint(SpringLayout.EAST, lblRemoto, -19, SpringLayout.EAST, contentPane);
		contentPane.add(lblRemoto);

		JLabel label = new JLabel("Endere\u00E7o");
		sl_contentPane.putConstraint(SpringLayout.WEST, lblRemoto, 0, SpringLayout.WEST, label);
		sl_contentPane.putConstraint(SpringLayout.NORTH, label, 0, SpringLayout.NORTH, lblEndereo);
		sl_contentPane.putConstraint(SpringLayout.WEST, label, 28, SpringLayout.EAST, enderecoLocal);
		contentPane.add(label);

		enderecoRemoto = new JTextField();
		sl_contentPane.putConstraint(SpringLayout.WEST, enderecoRemoto, 341, SpringLayout.WEST, contentPane);
		sl_contentPane.putConstraint(SpringLayout.EAST, label, -6, SpringLayout.WEST, enderecoRemoto);
		sl_contentPane.putConstraint(SpringLayout.NORTH, enderecoRemoto, -2, SpringLayout.NORTH, lblEndereo);
		sl_contentPane.putConstraint(SpringLayout.EAST, enderecoRemoto, 494, SpringLayout.WEST, contentPane);
		enderecoRemoto.setColumns(10);
		contentPane.add(enderecoRemoto);

		JLabel ExENDERECO = new JLabel("Ex: mysql.jcomp.com.br");
		sl_contentPane.putConstraint(SpringLayout.NORTH, ExENDERECO, 0, SpringLayout.NORTH, ExENDERECOLOCAL);
		sl_contentPane.putConstraint(SpringLayout.WEST, ExENDERECO, 0, SpringLayout.WEST, enderecoRemoto);
		sl_contentPane.putConstraint(SpringLayout.EAST, ExENDERECO, 0, SpringLayout.EAST, enderecoRemoto);
		contentPane.add(ExENDERECO);

		JLabel lblBanco = new JLabel("Banco");
		sl_contentPane.putConstraint(SpringLayout.NORTH, lblBanco, 0, SpringLayout.NORTH, lblLogin);
		sl_contentPane.putConstraint(SpringLayout.WEST, lblBanco, 28, SpringLayout.EAST, loginLocal);
		contentPane.add(lblBanco);

		bancoRemoto = new JTextField();
		sl_contentPane.putConstraint(SpringLayout.EAST, lblBanco, -26, SpringLayout.WEST, bancoRemoto);
		sl_contentPane.putConstraint(SpringLayout.NORTH, bancoRemoto, -2, SpringLayout.NORTH, lblLogin);
		sl_contentPane.putConstraint(SpringLayout.WEST, bancoRemoto, 341, SpringLayout.WEST, contentPane);
		sl_contentPane.putConstraint(SpringLayout.EAST, bancoRemoto, 0, SpringLayout.EAST, enderecoRemoto);
		bancoRemoto.setColumns(10);
		contentPane.add(bancoRemoto);

		JLabel ExBANCO = new JLabel("Ex: jcompany_clarel");
		sl_contentPane.putConstraint(SpringLayout.NORTH, ExBANCO, 0, SpringLayout.NORTH, lblSenha);
		sl_contentPane.putConstraint(SpringLayout.WEST, ExBANCO, 0, SpringLayout.WEST, enderecoRemoto);
		sl_contentPane.putConstraint(SpringLayout.EAST, ExBANCO, 470, SpringLayout.WEST, contentPane);
		contentPane.add(ExBANCO);

		JLabel label_2 = new JLabel("Login");
		sl_contentPane.putConstraint(SpringLayout.NORTH, label_2, 27, SpringLayout.SOUTH, lblBanco);
		sl_contentPane.putConstraint(SpringLayout.WEST, label_2, 269, SpringLayout.WEST, contentPane);
		sl_contentPane.putConstraint(SpringLayout.EAST, label_2, 0, SpringLayout.EAST, lblBanco);
		contentPane.add(label_2);

		loginRemoto = new JTextField();
		sl_contentPane.putConstraint(SpringLayout.NORTH, loginRemoto, 6, SpringLayout.SOUTH, ExBANCO);
		sl_contentPane.putConstraint(SpringLayout.WEST, loginRemoto, 341, SpringLayout.WEST, contentPane);
		sl_contentPane.putConstraint(SpringLayout.EAST, loginRemoto, 0, SpringLayout.EAST, enderecoRemoto);
		loginRemoto.setColumns(10);
		contentPane.add(loginRemoto);

		JLabel label_3 = new JLabel("Senha");
		contentPane.add(label_3);

		JLabel lblLocal = new JLabel("BANCO DE DESTINO");
		sl_contentPane.putConstraint(SpringLayout.NORTH, lblEndereo, 5, SpringLayout.SOUTH, lblLocal);
		sl_contentPane.putConstraint(SpringLayout.NORTH, lblRemoto, 0, SpringLayout.NORTH, lblLocal);
		sl_contentPane.putConstraint(SpringLayout.NORTH, lblLocal, 0, SpringLayout.NORTH, contentPane);
		sl_contentPane.putConstraint(SpringLayout.WEST, lblLocal, 10, SpringLayout.WEST, contentPane);
		sl_contentPane.putConstraint(SpringLayout.EAST, lblLocal, -372, SpringLayout.EAST, contentPane);
		contentPane.add(lblLocal);

		JButton btnExecutar = new JButton("EXECUTAR");
		btnExecutar.addMouseListener(new MouseAdapter()
		{
			@Override
			public void mouseClicked(MouseEvent arg0)
			{

				Backup migrador = new Backup();
				migrador.enderecolocal = enderecoLocal.getText();
				migrador.loginlocal = loginLocal.getText();
				migrador.senhalocal = senhaLocal.getText();

				migrador.enderecobanco = enderecoRemoto.getText();
				migrador.banco = bancoRemoto.getText();
				migrador.login = loginRemoto.getText();
				migrador.senha = senhaRemoto.getText();

				if (!(bancoRemoto.getText().equals("")) && !(enderecoLocal.getText().equals("")) && !(enderecoRemoto.getText().equals("")))
				{
					try
					{
						migrador.executar();
					}
					catch (IOException e)
					{

						e.printStackTrace();
					}
					catch (SQLException e)
					{

						e.printStackTrace();
					}
					catch (InterruptedException e)
					{

						e.printStackTrace();
					}
					catch (ClassNotFoundException e)
					{

						e.printStackTrace();
					}
				}
			}
		});
		sl_contentPane.putConstraint(SpringLayout.WEST, btnExecutar, 10, SpringLayout.WEST, contentPane);
		sl_contentPane.putConstraint(SpringLayout.SOUTH, btnExecutar, -10, SpringLayout.SOUTH, contentPane);
		contentPane.add(btnExecutar);

		senhaLocal = new JPasswordField();
		sl_contentPane.putConstraint(SpringLayout.NORTH, senhaLocal, 6, SpringLayout.SOUTH, loginLocal);
		sl_contentPane.putConstraint(SpringLayout.WEST, senhaLocal, 32, SpringLayout.EAST, lblSenha);
		sl_contentPane.putConstraint(SpringLayout.EAST, senhaLocal, -100, SpringLayout.WEST, ExBANCO);
		contentPane.add(senhaLocal);

		senhaRemoto = new JPasswordField();
		sl_contentPane.putConstraint(SpringLayout.NORTH, label_3, 2, SpringLayout.NORTH, senhaRemoto);
		sl_contentPane.putConstraint(SpringLayout.EAST, label_3, -26, SpringLayout.WEST, senhaRemoto);
		sl_contentPane.putConstraint(SpringLayout.NORTH, senhaRemoto, 11, SpringLayout.SOUTH, loginRemoto);
		sl_contentPane.putConstraint(SpringLayout.WEST, senhaRemoto, 0, SpringLayout.WEST, enderecoRemoto);
		sl_contentPane.putConstraint(SpringLayout.EAST, senhaRemoto, -5, SpringLayout.EAST, enderecoRemoto);
		contentPane.add(senhaRemoto);

		JLabel LocalDoBackup = new JLabel("Local do Backup");
		sl_contentPane.putConstraint(SpringLayout.WEST, label_3, 165, SpringLayout.EAST, LocalDoBackup);
		sl_contentPane.putConstraint(SpringLayout.NORTH, LocalDoBackup, 19, SpringLayout.SOUTH, senhaLocal);
		sl_contentPane.putConstraint(SpringLayout.WEST, LocalDoBackup, 0, SpringLayout.WEST, lblEndereo);
		sl_contentPane.putConstraint(SpringLayout.EAST, LocalDoBackup, -393, SpringLayout.EAST, contentPane);
		contentPane.add(LocalDoBackup);

	}
}

Aqui está a imagem de como fica! e na parte em verde, estou tentando colocar um logo de 186x80 que está numa pasta no meu computador. Se alguém conseguir me ajudar, pois ainda não tenho experiência com JFRAME.

Obrigado desde já.

Bom gente… atravez de muita pesquisa… e ajuda de professores cheguei a essa solução:

    BufferedImage ad;
    try {
         ad = Formulário.baterFoto();
    
         ImageIcon icon = new ImageIcon(ad.getScaledInstance(ad.getWidth()/4, ad.getHeight()/4, 100));

         imgLabel7.setIcon(icon);
         imgLabel7.repaint();
    } catch (Exception ex) {
        Logger.getLogger(painel.class.getName()).log(Level.SEVERE, null, ex);
    }

isto funciona tranquilamente. \o

espero que te ajude.