trocar imagem num JLabel....  XML
Índice dos Fóruns » Interface Gráfica
Autor Mensagem
Alexandre Gazola
JavaTeenager
[Avatar]

Membro desde: 23/07/2004 14:48:23
Mensagens: 176
Localização: Rio de Janeiro
Offline

Oi pessoal ,blz??

Eu tenho minha classe normal (que extende JFrame)... dentro desse JFrame eu tenho um JPanel... dentro do JPanel eu tenho um JLabel que contém uma imagem. Até aí, blz... o negócio agora, é que quero fazer uma atualização na interface, trocando a imagem toda vez que o usuário clica num botão... estou
fazendo da seguinte forma:

updateBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {


imageLabel.setIcon(new ImageIcon( path ));
EditPatternUI.this.repaint();



}
}
);

Só que NADA ACONTECE! A imagem no JLabel permanece a mesma. Como devo fazer??

obrigado por quem puder ajudar

Alexandre Gazola

Blog: http://alexandregazola.wordpress.com

"Que proveito tem o homem ganhar o mundo inteiro e perder a sua alma?" (Mc. 8:36)

"Buscai, em primeiro lugar, o Reino de Deus e a sua justiça, e todas essas coisas vos serão dadas por acréscimo" (Mt. 6:33)
Ironlynx
Moderador
[Avatar]

Membro desde: 02/05/2003 01:06:41
Mensagens: 3515
Localização: The other side of the screen
Offline

Vc sobescreveu o paintComponent?Alexandre, normalmente eu faço + ou - assim:

E na hora de pegá-la:

Funciona 100% .

Não basta persistir...tem que prevalecer!
Ironlynx
Anarquista de Sistemas
http://osereojava.blogspot.com/
[WWW]
reizin
JavaTeenager
[Avatar]

Membro desde: 12/05/2003 01:15:34
Mensagens: 178
Offline

Cara sempre fiz assim e sempre funcionou

-------------------------
http://www.thiagoreispontes.com
[MSN] [ICQ]
reizin
JavaTeenager
[Avatar]

Membro desde: 12/05/2003 01:15:34
Mensagens: 178
Offline

.

This message was edited 1 time. Last update was at 05/08/2005 17:10:40


-------------------------
http://www.thiagoreispontes.com
[MSN] [ICQ]
Ironlynx
Moderador
[Avatar]

Membro desde: 02/05/2003 01:06:41
Mensagens: 3515
Localização: The other side of the screen
Offline

reizin, quando vc troca imagens vc pode ter q dar um "resize" em cada uma delas para caberem dentro da área delimitada para o JLabel que irá exibí-la(elas podem ter tam muito distintos tb).Para isso tem q se usar getScaledInstance() da forma como mostrei.

Não basta persistir...tem que prevalecer!
Ironlynx
Anarquista de Sistemas
http://osereojava.blogspot.com/
[WWW]
Alexandre Gazola
JavaTeenager
[Avatar]

Membro desde: 23/07/2004 14:48:23
Mensagens: 176
Localização: Rio de Janeiro
Offline

Pessoal, obrigado pela ajuda, mas nada disso funcionou... a imagem no JLabel continua a mesma

Alexandre Gazola

Blog: http://alexandregazola.wordpress.com

"Que proveito tem o homem ganhar o mundo inteiro e perder a sua alma?" (Mc. 8:36)

"Buscai, em primeiro lugar, o Reino de Deus e a sua justiça, e todas essas coisas vos serão dadas por acréscimo" (Mt. 6:33)
Ironlynx
Moderador
[Avatar]

Membro desde: 02/05/2003 01:06:41
Mensagens: 3515
Localização: The other side of the screen
Offline

Epa!!!Como não funcionou???Bom, montei um exemplo rápido aqui, e de quebra vc ainda ganha como personalizar um JFileChooser...
veja as classes:








E finalmente a classe para visualizar:

OBS.:Livre adaptação minha do exemplo da sun de JFileChooser2.java

Nota:Tô bonzinho hoje!

Não basta persistir...tem que prevalecer!
Ironlynx
Anarquista de Sistemas
http://osereojava.blogspot.com/
[WWW]
Alexandre Gazola
JavaTeenager
[Avatar]

Membro desde: 23/07/2004 14:48:23
Mensagens: 176
Localização: Rio de Janeiro
Offline

Amigo, blz??? Valeu pela ajuda... mas seu código está muito grande.. entao achei melhor mandar o meu p/ vc dar uma olhada... é coisa rápida.
O negócio é que ele não muda a imagem no JLabel após eu clicar no botão.... um abraço


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;

public class EditPatternUI extends JFrame {


private Container c;

private JLabel imageLabel;

private JButton updateBtn;

private String path;
private Icon imageDiagram;

public EditPatternUI() {
super("Edit Analysis Pattern");

c = getContentPane();
c.setLayout(null);

File fileDirAux = new File("");
path = fileDirAux.getAbsolutePath();

imageDiagram = new ImageIcon( path + "\\temp.gif");
System.out.println("veja: " + path);
imageLabel = new JLabel(imageDiagram);

JPanel panel1 = new JPanel();

// adiciona imagem ao painel1
panel1.add(imageLabel);


// esse botao dispara o evento de trocar a imagem
updateBtn = new JButton("Update Image");
updateBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {

ImageIcon ig = new ImageIcon(path +
"\\outra.gif"); // pega a outra imagem do mesmo diretorio

imageDiagram=ig;
imageLabel.setIcon(ig);
imageLabel.repaint();
EditPatternUI.this.repaint();



}
}
);
c.add(updateBtn);
updateBtn.setBounds(310, 580, 150, 25);

// não há necessidade de redimensionamento da imagem, se ela for maior, aparece a barra de rolagem

JScrollPane scroller = new JScrollPane(panel1);
scroller.setBounds(10, 60, 700, 500);

c.add(scroller, BorderLayout.CENTER);


addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {

dispose();
}
});


setResizable(false);
setSize(1000, 725);
setVisible(true);
}


/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
EditPatternUI app = new EditPatternUI();

}

}

Alexandre Gazola

Blog: http://alexandregazola.wordpress.com

"Que proveito tem o homem ganhar o mundo inteiro e perder a sua alma?" (Mc. 8:36)

"Buscai, em primeiro lugar, o Reino de Deus e a sua justiça, e todas essas coisas vos serão dadas por acréscimo" (Mt. 6:33)
Ironlynx
Moderador
[Avatar]

Membro desde: 02/05/2003 01:06:41
Mensagens: 3515
Localização: The other side of the screen
Offline

Cara, esse seu código funciona, nem precisa dessa linha:
imageLabel.repaint(); pq vc pôs aquela con referência a classe.
Algumas dicas:não use null layout.Apresenta diferentes comportamentos em diferentes sistemas.
Vc extende JFrame, esqueça windowclosing e use apenas:



Não basta persistir...tem que prevalecer!
Ironlynx
Anarquista de Sistemas
http://osereojava.blogspot.com/
[WWW]
Alexandre Gazola
JavaTeenager
[Avatar]

Membro desde: 23/07/2004 14:48:23
Mensagens: 176
Localização: Rio de Janeiro
Offline

Valeu pelas dicas! Não é que esse código q te mandei funciona mesmo... o estranho é q na minha aplicação não está funcionando.. nao entendo pq...

Alexandre Gazola

Blog: http://alexandregazola.wordpress.com

"Que proveito tem o homem ganhar o mundo inteiro e perder a sua alma?" (Mc. 8:36)

"Buscai, em primeiro lugar, o Reino de Deus e a sua justiça, e todas essas coisas vos serão dadas por acréscimo" (Mt. 6:33)
Alexandre Gazola
JavaTeenager
[Avatar]

Membro desde: 23/07/2004 14:48:23
Mensagens: 176
Localização: Rio de Janeiro
Offline

cara, achei o problema! é que em meu projeto eu estava utilizando o mesmo nome de figura... antes de fazer a atualização, eu gerava uma outra figura em cima da anterior (com o mesmo nome) e na hora de atualizar a figura, ele nao atualizava pq estava com o mesmo nome... sabe como posso forçar ele a fazer a atualização??

Alexandre Gazola

Blog: http://alexandregazola.wordpress.com

"Que proveito tem o homem ganhar o mundo inteiro e perder a sua alma?" (Mc. 8:36)

"Buscai, em primeiro lugar, o Reino de Deus e a sua justiça, e todas essas coisas vos serão dadas por acréscimo" (Mt. 6:33)
 
Índice dos Fóruns » Interface Gráfica
Ir para:   
Powered by JForum 2.1.8 © JForum Team