Acessar valores do click do mouse (mouse listener)

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:

[code]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"));
}

}
[/code]

essa é alistener:

[code]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.");
}  

}[/code]

Vlw!

Comecei a aprender java a pouco tempo e possivelmente (provavelmente) estou falando besteira, mas não custa tentar ajudar né?

Se você criar as variáveis como globais, assim

[code]public class Listener extends MouseAdapter implements ActionListener
{
int x, y;

@Override  
public void mousePressed(MouseEvent e)  
{  
    x = e.getX();  
    y = e.getY();  
} [/code]

não consegue recuperar com l.x e l.y lá no pintarPixel()?

znx, pra recuperar até que daria, só que como são vários clicks e a Listener eh disparada automaticamente, eu não sei onde poderia fazer a chamada das variáveis globais dentro da InterfaceEditarPontos para receber o valor sempre após o click, entendeu? Caso vc tenha uma ideia de quando fazer essa chamada sua solução pode dar certo. Se souber, diga ai que eu estou sem ideias. De qualquer modo, vlw pela resposta.

Pesquisando um pouco, vi que dá pra trazer uma AbstractAction para dentro da classe. O problema é que não consigo fazer a chamada do método automaticamente como fazia com a classe Listener. Alguma ideia?

[code]public InterfaceEditarPontos(BufferedImage imagem){
criaComponentesJanela(); // cria os componentes da janela

    setSize(imagem.getWidth(),imagem.getHeight());
    this.imagem = imagem;
    
    povoaJanela();
    pack();
    
    //como fazer chamada da 'AbstractAction' aqui?

    setVisible(true); // torna a janela visivel
}

Action mouseClick = new AbstractAction() {        
    public void actionPerformed(MouseEvent e) {
        System.out.println("Click do mouse...");
        int i = e.getX();
        int j = e.getY();
        try {
            pintarPixel(i, j);
        } catch (IOException ex) {
            Logger.getLogger(InterfaceEditarPontos.class.getName()).log(Level.SEVERE, null, ex);
        }
    @Override
    public void actionPerformed(ActionEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
};

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"));
}

}[/code]

Consegui resolver o problema sem precisas usar uma classe Listener. Ficou assim:

[code]public InterfaceEditarPontos(BufferedImage imagem){
criaComponentesJanela(); // cria os componentes da janela

    setSize(imagem.getWidth(),imagem.getHeight());
    this.imagem = imagem;
    
    povoaJanela();
    pack();
    
    this.addMouseListener(new MouseListener()
    {
        @Override
        public void mouseClicked(MouseEvent e)
        {
            System.out.println("X: " +e.getX() + " Y: " + e.getY());     
        }

        @Override
        public void mousePressed(MouseEvent e) {
        }

        @Override
        public void mouseReleased(MouseEvent e) {
        }

        @Override
        public void mouseEntered(MouseEvent e) {
        }

        @Override
        public void mouseExited(MouseEvent e) {
        }
    });
    
    setVisible(true); // torna a janela visivel
}[/code]

Vlw pela ajuda, znx.