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());
}
lina
Janeiro 5, 2007, 11:52am
#22
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
lina
Janeiro 5, 2007, 12:09pm
#26
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();
}
lina
Janeiro 5, 2007, 12:20pm
#28
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…
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?