Como passar uma imagem ou File para o ActionPerfomed?

6 respostas
T

oLA a todos , tem alguns dias que to tentando fazer um programa que ao usuario apertar o botao , o programa carregue uma imagem e a exiba no panel de determinado frame.
Porém nao estou conseguindo passar a imagem como açao do actionListener , alguem pode me ajudar?
obrigado e ate +

6 Respostas

J

Na realidade, não dá pra alterar a assinatura do actionPerformed, e nem é você quem chama ele, então, você pega sua imagem dentro do metodo:

ex.:

public void actionPerformed(ActionEvent evt){ File arq = new File("caminho"); //mostra imagem }

T

ok , jairelton , agradeço a ajuda, tentarei implementar da forma como voce colocou ai , se alguem tiver mais algum comentario , agradeço

T

ah e uma duvida que me veio agora , aonde eu vou “pintar” o componente no meu projeto anterior (" que estava horrivel por isso vou reiniciar , ele nao aceitava o paintComponent no escopo do actionPerfomed) entao aonde vou colocar o drawImage ??
Agradeço e até mais

J

Depende de como você está fazendo isso, o fato de ele não aceitar o paintComponent deve ter a ver com a forma como você está implementando o metodo, talvez o objeto que tenha o paintComponent esteja fora do escopo ou algo assim…

Dê uma olhada nisso, se for o caso, simplesmente crie um componente dentro do actionPerformed, como um Canvas ou JPanel e adicione ao Frame.

T
import javax.swing.<em>;

import java.awt.</em>;

import java.awt.event.<em>;

import <a href="http://java.io">java.io</a>.</em>;

import javax.imageio.*;
public class imageView2

{

public static void main(String[] args)

{

viewFrame frame= new viewFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

}

}

class viewFrame extends JFrame
{
	public viewFrame()
	{
		setTitle("mostra imagem por um botao");
		setSize(100,200);
		
		//adiciona o panel ao frame
		
		viewPanel panel= new viewPanel();
		add(panel);
		
	}

}




class viewPanel extends JPanel
{
	 public viewPanel()
	{
		JButton visualizador= new JButton("visualizador");
		
		//adiciona o botao ao panel
		
		add(visualizador);
		
		//provoca a açao de carregar a imagem atraves do botao associando um actionListener ao botao

		imageAction action = new imageAction("1.gif");
		
		//associa o botao a açao
		
		visualizador.addActionListener(action);

	}






	 private class imageAction implements ActionListener
	 {
	
		imageAction(String x)
		{	
		 	Image img;
									
			try
			{ img=ImageIO.read(new File(x)); 
			}
		
			catch(IOException e)
			 {e.printStackTrace();}
			 }
	


		}

				
		//depois adicionar um teste para verificar a validade da imagem		


					
	

		public void actionPerformed(ActionEvent event)
		{       
			
			public void paintComponent(Graphics g)
			{
				super.paintComponent(g);
		
				g.drawImage(img,10,10,null);


			}
		}
	
	}

}

/* os erros sao

C:\Documents and Settings\User\Desktop\testes>javac imageView2.java

imageView2.java:94: illegal start of expression

public void paintComponent(Graphics g)

^

imageView2.java:104: class, interface, or enum expected

}

^

2 errors

*/

passei algumas horas quebrando a cabeça e nao consegui resolver

se ajudaerem ficarei agradecido

C

Amigo, temos uns 3 posts sobre esse código aqui no fórum, de uma pesquisada legal que tu vai achar ele prontinho :joia:

Criado 28 de fevereiro de 2007
Ultima resposta 1 de mar. de 2007
Respostas 6
Participantes 3