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 +
Como passar uma imagem ou File para o ActionPerfomed?
6 Respostas
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
}
ok , jairelton , agradeço a ajuda, tentarei implementar da forma como voce colocou ai , se alguem tiver mais algum comentario , agradeço
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
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.
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
Amigo, temos uns 3 posts sobre esse código aqui no fórum, de uma pesquisada legal que tu vai achar ele prontinho :joia: