Carregar imagens?

2 respostas
Rostery

puta galera, não consigo carregar uma imagem de jeito nenhum...
já criei meu botão que abri o DialogFile para buscar as imagens aí quando busco naum aparece nd na tela...
eu uso o eclipse...e o codigo ta assim:

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

import sun.tools.jar.JarImageSource;


public class JnPrincipal extends JFrame implements ActionListener {
	ConectBanco bd = new ConectBanco();
	PicturePanel pp = new PicturePanel();
	private JTabbedPane tabs;
	private Image imfoto;
	private JButton btAnt;
	private JButton btProx;
	private JButton btAbrir;
	private Toolkit tk = Toolkit.getDefaultToolkit();
	private FileDialog fd = new FileDialog(this, "Selecione a Imagem: ");
	private JLabel lbcaminho = new JLabel();

	public JnPrincipal(){
		super("Janela Principal");
		//ABA 1
		tabs = new JTabbedPane();
		JPanel panel = new JPanel();
		ImageIcon icon = new ImageIcon("diam-verm.gif");
		JLabel lbnome = new JLabel("Nome: ");
			JTextField tfnome = new JTextField(20);
		JLabel lbcidade = new JLabel("Cidade: ");
			JTextField tfcidade = new JTextField(30);
		JLabel lbcontato = new JLabel("Contato: ");
			JTextField tfcontato = new JTextField(30);
		JLabel lbrg = new JLabel("RG: ");
			JTextField tfrg = new JTextField(10);
		JLabel lbfone = new JLabel("Telefone: ");
			JTextField tffone = new JTextField(11);
		JLabel lbemail = new JLabel("E-mail: ");
			JTextField tfemail = new JTextField(30);
		JLabel lbend = new JLabel("Endereço: ");
			JTextField tfend = new JTextField(30);
		JLabel lbfoto = new JLabel("Foto: ");
		
		//ImageIcon iifoto = new ImageIcon(imfoto);
		//lbcaminho = new JLabel(iifoto);
		

				
		/*
		 response.setContentType("image/png");
		 OutputStream os = response.getOutputStream();
		 ImageIO.write(buffer, "png", os);
		 os.close();  
*/
			
		//====ADD===
		panel.add(lbnome);
		panel.add(tfnome);
		panel.add(lbcidade);
		panel.add(tfcidade);
		panel.add(lbcontato);
		panel.add(tfcontato);	
		panel.add(lbrg);
		panel.add(tfrg);
		panel.add(lbfone);
		panel.add(tffone);
		panel.add(lbend);
		panel.add(tfend);
		panel.add(lbemail);
		panel.add(tfemail);
		panel.add(lbfoto);	
		panel.add(btAbrir = new JButton("Abrir"),"West");
		panel.add(lbcaminho);
		
 		

		btAbrir.addActionListener(this);
		//addWindowListener(new CloseAndExit());
			
		//ta.setLineWrap(true); ta.setWrapStyleWord(true);
		tabs.addTab("Entrada", new ImageIcon("diam-azul.gif"), panel);
		
		//ABA 2	
		JPanel panel2 = new JPanel();
		panel2.setBackground(Color.white);
		tabs.addTab("Saída", new ImageIcon("diam-lilas.gif"), panel2);
		//ABA 3
		panel = new JPanel();
		panel.add(new JLabel("Teste"));
		tabs.addTab("Relatorio", new ImageIcon("diam-azul.gif"), panel);
		//ABA 4
		JPanel panel4 = new JPanel();
		tabs.addTab("Localizar", new ImageIcon("diam-verde.gif"), panel4);
		getContentPane().add(tabs, "Center");
		//Painel de COntrole
		JPanel p1 = new JPanel(), p2 = new JPanel(new GridLayout(1,1,1,1));
		p2.add(btAnt = new JButton("Anterior"));
		p2.add(btProx = new JButton("Próximo"));
		p1.add(p2);
		getContentPane().add(p1, "North");
		btAnt.addActionListener(this);
		btProx.addActionListener(this);
		setSize(550,480);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				
	}
	
public void actionPerformed(ActionEvent e) {
	PicturePanel pp = new PicturePanel();
	fd.show();
	if(fd.getFile()!= null){
		if(imfoto != null){
			lbcaminho.setText(fd.getDirectory()+fd.getFile());
			imfoto = tk.getImage(lbcaminho.getText());
			repaint();
		}
	
	}
	
	/*
	int i = tabs.getSelectedIndex();
	if(e.getSource()==btAnt)
		tabs.setSelectedIndex(i>0?i-1:tabs.getTabCount()-1);
	else
		tabs.setSelectedIndex(i<tabs.getTabCount()-1?i+1:0);
		*/
}
	
public void paint(Graphics g){
	if(imfoto != null){
		Dimension apl = getSize();
		int w = imfoto.getWidth(this), h = imfoto.getHeight(this);
		g.drawImage(imfoto, (apl.width-w)/2, (apl.height-h)/2, this);
		}
	super.paint(g);
}

public static void main(String[] args){
	new JnPrincipal().show();
	

}
	
// TODO Auto-generated method stub
	
}

eu sou novo em java...ta, ajuda ae se der blz??
Obrigado!!!

2 Respostas

cassio

nesta parte

public void actionPerformed(ActionEvent e) {
 	PicturePanel pp = new PicturePanel();
 	fd.show();
 	if(fd.getFile()!= null){
 		if(imfoto != null){
 			lbcaminho.setText(fd.getDirectory()+fd.getFile());
 			imfoto = tk.getImage(lbcaminho.getText());
 			repaint();
 		}
 	
 	}

Isso

if(imfoto != null){
 			lbcaminho.setText(fd.getDirectory()+fd.getFile());
 			imfoto = tk.getImage(lbcaminho.getText());
 			repaint();
 		}

nunca será executado, pois imfoto É null sempre que chega ai! Vc declarou ela lá em cima, mas em nenhum momento passou uma referência para ela! Ela foi criada e desde então permanece com o valor null!

Faça algo do tipo

public void actionPerformed(ActionEvent e) {
 	PicturePanel pp = new PicturePanel();
 	fd.show();
 	if(fd.getFile()!= null){ 		
 			lbcaminho.setText(fd.getDirectory()+fd.getFile());
 			imfoto = tk.getImage(lbcaminho.getText());
 			repaint(); 	
 	}

Sem o if de dentro :slight_smile:
Não sei tbm se é necessário setar o tamanho (com setBounds ou algo do tipo) desse PicturePanel. Nunca usei esse componente, mas pode acontecer dele ficar com tamanho (0,0) e logo não exibir a imagem, mesmo que essa corretamente carregada.
Outro detalhe que pode fazer com que uma imagem não seja exibida é que a execução do programa segue antes da imagem ter sido totalmente carregada. Para evitar isso use a classe MediaTracker.

Abraço!

Rostery

Nossa!!!, muito obrigado cara…está quase certo!!!, mas manja, olha que loko, esse label que eu coloquei aí exibirá o caminho de onde to pegando a imagem, que dahora, eu busco ela certinho, aí aparece tb no Label centinhu, mas a imagem naum aparece ela da uma picada na tela e some rapidão!!!rs

vo da umas oiada aki e ve o que ta acontecendo!!!

Muito obrigado vc ajudo pa caramba!!!

Abraço!! :smiley:

Criado 24 de agosto de 2006
Ultima resposta 24 de ago. de 2006
Respostas 2
Participantes 2