Imagem ao clicar no JButton

4 respostas
C

Oi, ainda sou nova na linguagem Java e gostaria de saber como faço para aparecer uma imagem ao clicar no JButton…
Por exemplo, tenho um botão com um desenho e ao clicar gostaria que aparecesse outro no lugar dele…
Obrigada! :smiley:

4 Respostas

J

se eu entendi direito e simples

vc ja esta atribuindo uma imagem ao botao, portanto no evento mouse clicked vc atribui a imagem que vc quer substituindo a anterior.

espero ter ajudado…

A

Voçê pode, dentro de uma JFrame, criar 2 painéis, colocando os botoes num painel e deixar o outro livre, quando voce executar o clique em determinado botao, no outro painel ele executara determinada funcao, para voce apenas trocar a imagem do botao e a mesma coisa, mas vc precisa de apenas 1 painel, crie um vetor, associe a cada indice uma imagem, ao realizar a acao de clicar no botao, vc pega a imagem do associada ao indice seguinte …

Se vc quiser, me passe seu email, tenho um otimo exemplo dessa aplicacao, é que sao 4 classes, pra coloca-las aqui ficariam 1/2 grandes

A

Por exemplo, essa seria a classe de botoes, que executaria as acoes num outro painel

package quadros;

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

public class PainelBotao extends JPanel
{
	// Atributos da Janelala
	private JButton[] botao = new JButton[6];
	private ImageIcon[] icone = new ImageIcon[6];
	private int tipoMostra;
	private JPanel painelInternoBotoes = new JPanel();
	private PainelMostra mostra = new PainelMostra();
	JFrame frame;
	
	// Imagens
	String imagemImpressionistas[] = 
			{	"Imagens/VanGoghGalleryPlayer",
				"Imagens/SisleyGalleryPlayer",
				"Imagens/SargentGalleryPlayer",
				"Imagens/RenoirGalleryPlayer",
				"Imagens/HassamGalleryPlayer",
				"Imagens/DegasGalleryPlayer"};
	String imagemViagens[] = 
			{	"Imagens/BaliGalleryPlayer",
				"Imagens/RomeGalleryPlayer",
				"Imagens/RussiaGalleryPlayer",
				"Imagens/VeniceGalleryPlayer",
				"Imagens/SydneyGalleryPlayer"};					
	
	// Texto e Mnnemonicos
	String textoImpressionistas[] = {"Van Gogh", "Sisley", "Sargent", "Renoir", "Hassam", "Degas"};
	int MnemonicImpressionistas[] = {KeyEvent.VK_V, KeyEvent.VK_S, KeyEvent.VK_A, KeyEvent.VK_R ,KeyEvent.VK_H, KeyEvent.VK_D};
	
	String textoViagens[] = {"Bali", "Roma", "Russia", "Veneza", "Sydney"};
	int MnemonicViagens[] = {KeyEvent.VK_B, KeyEvent.VK_R, KeyEvent.VK_U, KeyEvent.VK_V ,KeyEvent.VK_S};

	public void desenhaPainel (JFrame meuFrame, int tipo)
	{
		tipoMostra = tipo;
		frame = meuFrame;
		
		//------------Layout do Painel e Painel Botoes
		setLayout(new BorderLayout());
		painelInternoBotoes.setLayout(new GridLayout(0,1));
		
		//------------PainelBotao
  	   	UsuarioHandler handler = new UsuarioHandler();
		painelInternoBotoes.removeAll();
  	   	
  	   	// Verifica Menu
		if(tipo == 1)
			for(int i = 0; i < imagemImpressionistas.length; i++) 
			{
				icone[i] = new ImageIcon(imagemImpressionistas[i]+"_Thumb.jpg");
				botao[i] = new JButton (textoImpressionistas[i], icone[i]);
	    		botao[i].setMnemonic(MnemonicImpressionistas[i]);
    			botao[i].addActionListener(handler);
    			painelInternoBotoes.add(botao[i]);
			}
		else
			for(int i = 0; i < imagemImpressionistas.length-1; i++) 	
			{
				icone[i] = new ImageIcon(imagemViagens[i]+"_Thumb.jpg");
 				botao[i] = new JButton (textoViagens[i], icone[i]);
	    		botao[i].setMnemonic(MnemonicViagens[i]);
    			botao[i].addActionListener(handler);
    			painelInternoBotoes.add(botao[i]);
			}	
			
		// Adiciona o primeiro painel
		mostra.desenhaPainel(meuFrame);
		add(painelInternoBotoes, BorderLayout.WEST);
		add(mostra, BorderLayout.CENTER);
			
	}
	
	public PainelMostra retornaPainel()
	{
		return mostra;
	}

  //------------Classe Ouvinte de Eventos	
  private class UsuarioHandler implements ActionListener
  {
          public void actionPerformed (ActionEvent evento)
          {
               	int indice;
               		
                 // Verifica de qual botao veio o evento
                 for(indice = 0; indice<botao.length; indice++) 
                 	if(evento.getSource() == botao[indice]) break;
                 
                 // Dependendo do tipo - mostra a imagem correta
                 if(tipoMostra==1)
                    mostra.desenhaPainel(frame,
                    	imagemImpressionistas[indice]+".jpg",
                    	textoImpressionistas[indice] );		
      			 else
                    mostra.desenhaPainel(frame,
                    	imagemViagens[indice]+".jpg",
                    	textoViagens[indice] );		
				 
			}
	}
}

A partir dai, voce ja pode saber como tratar eventos, que e quem realmente vai fazer a troca das imagens
QQ duvida, escreva

C

Obrigada!
:smiley:

mil desculpas por não ter respondido antes…rsrs
beijos

Criado 28 de maio de 2008
Ultima resposta 23 de ago. de 2009
Respostas 4
Participantes 3