Ola. Como meu código é bem grande vou tentar simplificá-lo. Eu tenho uma classe principal que passa uma imagem para uma classe extends JFrame (InterfaceEditarPontos). Nesta classe InterfaceEditarPontos eu mando exibir uma imagem em um JFrame e sempre que houver um click de mouse na imagem acontece uma chamada a classe Listener que captura as coordenas do mouse. Tudo isso está acontecendo sem problema. O problema é que preciso pegar essas coordenadas do mouse e manda-las de volta para a classe InterfaceEditarPontos. Como as coordenadas são calculadas na classe Listener para enviá-las para a classe InterfaceEditarPontos eu preciso criar um objeto, só que a InterfaceEditarPontos utiliza uma imagem como parametro de entrada no construtor, então não da pra criar um objeto com valor null e como a classe Listener não tem acesso a imagem, não posso criar um objeto com esta imagem. Tem alguma forma de acessar o método pintarPixel dentro da classe InterfaceEditarPontos diretamente? As classes estão simplificadas abaixo. Lembrando que não tem nenhum problema no código, cada um tá fazendo o que precisa fazer, só não sei como retornar esses valores da classe Listener (e.getX() e e.getY()).
essa é a interface:public class InterfaceEditarPontos extends JFrame{
public InterfaceEditarPontos(BufferedImage imagem){
criaComponentesJanela(); // cria os componentes da janela
setSize(imagem.getWidth(),imagem.getHeight());
this.imagem = imagem;
povoaJanela();
pack();
Listener l = new Listener();
this.addMouseListener(l);
setVisible(true);
}
public void pintarPixel (int x, int y) throws IOException
{
int altura = imagem.getWidth();
int largura = imagem.getHeight();
int[] pixel = imagem.getRGB(0, 0, largura, altura, null, 0, largura);
pixel[largura * x + y] = new Color(255, 0, 0).getRGB();
imagem.setRGB(0, 0, largura, altura, pixel, 0, largura);
ImageIO.write(imagem, "PNG", new File("c:\\pontos.png"));
}
}
public class Listener extends MouseAdapter implements ActionListener
{
@Override
public void mousePressed(MouseEvent e)
{
int x = e.getX();
int y = e.getY();
//como passar x e y para o método pintarPixel?
}
@Override
public void actionPerformed(ActionEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
Vlw!