Exibindo imagem num Jpanel

Ah sim,

Ao invés da FileDialog, que tal usar um JFileChooser?

private void escolherArquivo(java.awt.event.ActionEvent evt) {
   JFileChooser fd = new JFileChooser();
   if (fd.showOpenDialog(this) == JFileChooser.CANCEL_OPTION)
      return;
   jLabel23.setText(fd.getSelectedFile());
   JImagePanel quadroImagem = new JImagePanel(jLabel23.getText());
}

Hum,
então… vou resolver da minha maneira tbm…
já que você não entendeu o que eu falei…

olha:

private void escolherArquivo(java.awt.event.ActionEvent evt) { 
JPanel quadroImagem = new JPanel()
{
            public void paint(Graphics g){ 
            g.drawImage(imagemselecionada,35,150,this); 
            }
}; 
FileDialog fd = new FileDialog(this,"Abrir"); 
fd.show(); 
jLabel23.setText(fd.getDirectory()+fd.getFile()); 
Toolkit tk = Toolkit.getDefaultToolkit(); 
imagemselecionada = tk.getImage(jLabel23.getText()); 
imagemselecionada=imagemselecionada.getScaledInstance(150,150,150); 
repaint(); 
}

Isso tem que funcionar…
Tenta…

Tchauzin!

Só novamente, sobrescreva paintComponent ao invés de paint:

private void escolherArquivo(java.awt.event.ActionEvent evt) { 
 JPanel quadroImagem = new JPanel()
 {
             public void paintComponent(Graphics g){ 
             g.drawImage(imagemselecionada,35,150,this); 
             }
 }; 
 FileDialog fd = new FileDialog(this,"Abrir"); 
 fd.show(); 
 jLabel23.setText(fd.getDirectory()+fd.getFile()); 
 Toolkit tk = Toolkit.getDefaultToolkit(); 
 imagemselecionada = tk.getImage(jLabel23.getText()); 
 imagemselecionada=imagemselecionada.getScaledInstance(150,150,150); 
 repaint(); 
 }

nada lina , nao ta dando certo…

e Vini… tb nao ta indo cara…

pior e que nao da erro nenhum , apenas nao mostra a imagem , mas esta carregando o arquivo sim… pois meu label aparece com o diretorio e nome do arquivo

Já que ta dificil,
e eu já consegui aqui e o meu amigo ali tbm…
mande seu código em anexo…
vamos dar uma olhada…

Acho que sei o que pode ser…

Notei que você está usando as classes da awt, e nós estamos sugerindo com classes do Swing.

As classes da AWT são heavyweight e sempre aparecem em cima das classes do Swing. Tenta fazer o código da Lina com um Panel ao invés de um JPanel. Se eu não me engano, na AWT o correto é sobrescrever o método paint mesmo.

Melhor mesmo é se você passar a usar as classes do Swing em todo o seu programa.

private void escolherArquivo(java.awt.event.ActionEvent evt) { JPanel quadroImagem = new Panel() { public void paint(Graphics g){ g.drawImage(imagemselecionada,35,150,this); } }; FileDialog fd = new FileDialog(this,"Abrir"); fd.show(); jLabel23.setText(fd.getDirectory()+fd.getFile()); Toolkit tk = Toolkit.getDefaultToolkit(); imagemselecionada = tk.getImage(jLabel23.getText()); imagemselecionada=imagemselecionada.getScaledInstance(150,150,150); repaint(); }

Oi,
pode ser isso sim…

olha só o Canvas é awt portanto ele é heavyweight =)
ou estou errada? não conheco esse component muito bem, só acho que ele é bom x)

Tchauzin!

Ae lina .,… aE Vini , deeem uma olhada no codigo ae ,.,

e Vini , todos os meus componentes que criei na interface , foram SWING , todos da pallete swing no netbeans…

E POR FAVOR ME RESPONDAM HEIM TO DESESPERADO POR QUE ESTOU EMPACADO COM ISSO E NAO VOU PRA CANTO NENHUM…RSRRSR :lol: :cry: :cry: :cry: :cry: :x

Você tem que inserir um painel em branco, no local onde a imagem vai aparecer. Para facilitar, faça esse painel com BorderLayout.

Depois que criar o quadroImagem, você tem que fazer:

painelLocalImagem.add(quadroImagem, BorderLayout.CENTER);
painelLocalImagem.repaint();

Se só criar o painel e não associa-lo nunca ao seu JFrame de alguma forma, a imagem nunca será exibida.

Outra coisa. Você está mesmo usando o Swing. Então, ao invés da FileDialog, use o JFileChooser.

    private void escolherArquivo(java.awt.event.ActionEvent evt)
    {// GEN-FIRST:event_escolherArquivo

        JFileChooser fd = new JFileChooser();
        if (fd.showOpenDialog(this) == JFileChooser.CANCEL_OPTION)
            return;
        
        jLabel23.setText(fd.getSelectedFile().getAbsolutePath());
        try
        {
            JImagePanel quadroImagem = new JImagePanel(fd.getSelectedFile());
            pnlLocalImagem.add(quadroImagem);
            pnlLocalImagem.validate();
        }
        catch (IOException ex)
        {
            JOptionPane.showMessageDialog(this, "Não foi possível ler a imagem.");
        }
        

        repaint();

    }// GEN-LAST:event_escolherArquivo

ViniGodoy, como faço pra usar essa sua class JImagePanel. Por favor da um exemplo. Tenho uma JFrame principal e quero inserir uma imagem em um Jpanel que estar no disco C:\image.jpg

Abrigado pela atenção

JFrame frame = new JFrame("Frame");
JImagePanel quadroImagem = new JImagePanel(new File("C:/image.jpg"));
frame.setContentPane(quadroImagem);

[quote=Mark_Ameba] JFrame frame = new JFrame("Frame"); JImagePanel quadroImagem = new JImagePanel(new File("C:/image.jpg")); frame.setContentPane(quadroImagem); [/quote][code]

Fiz extamente isso, mais a imagem não aparece. no Jlabel funciona, no Panel nao… o que será que estar errado?

initComponents();
JFrame iPrincipal = new JFrame();
JImagePanel quadroImagem = new JImagePanel(new File(“src\imagens\PlanoDeFundo\PlanoDeFundo - Principal.png”));
iPrincipal.setContentPane(quadroImagem);

Que gerenciador de layout vc está usando?

Tem certeza que esse File esta certo?

tente.

System.out.println(new File("src\\imagens\\PlanoDeFundo\\PlanoDeFundo - Principal.png").exists());

Se retornar true.

Tente setar o preferredSize do Panel para uma area bem grande e faça o pack do JFrame para ver se ela é exibida.

O caminho da imagem estar certo… retornou True… a aplicação roda mais nao aparece a imagem… se tiveres um exemplo ai que esteja rodando legal… anexa ai as class
Obrigado pela atenção

>>> Estou usando o NetBeans "DefinirLayout" - Desenho Livre

Acredito que isso seja o NullLayout, nesse caso voce precisa dimensionar o JPanel para ocupar o espaço que voce quer.

E recomendo não sar NullLayout.

Cara, já tenho um Jframe feito no NetBeans pronto, com barra de menu, botoes e tudo mais já inseridos… A pergunta eh: Como colocar um Jlabel no fundo com imagem e todos os outros componentes já inseridos ficarem por cima?