Java MouseListener mouseClicked()缺少第一个事件

Java MouseListener mouseClicked()缺少第一个事件,java,swing,awt,Java,Swing,Awt,现在是内部阶级 public class TesterApplication { static JPanel CenterPanel; public static void main(String[] args){ /* get image MapImg */ JFrame frame=new JFrame(); CenterPanel = new JPanel(){ @Override protected void paintComponen

现在是内部阶级

public  class TesterApplication {
static JPanel CenterPanel;
public static void main(String[] args){
   /* get image MapImg */
   JFrame frame=new JFrame();
   CenterPanel = new JPanel(){
        @Override
        protected void paintComponent(Graphics g){
            g.drawImage(MapImg, 0, 0, null);
        }
   };
   CenterPanel.addMouseListener(new LineBuildListener(new TesterApplication()));
   frame.getContentPane().add(BorderLayout.CENTER, CenterPanel);
   frame.setSize(x, y);
   frame.setVisible(true);
   frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
   }
}
同时,我第一次点击,我的GUI闪烁,点击计数器打印,我已经点击了一次,但我没有得到我的第一个圆圈。如果我一直单击“一切正常”,它会打印下一个圆,增加计数器并在它们之间画线,这样我就不明白为什么第一个圆丢失了

class LineBuildListener implements MouseListener {
     TesterApplication TA;
     int xFirstClick;
     int yFirstClick;
     int ClickCounter=0;
     int xClick;
     int yClick;
     LineBuildListener(TesterApplication TA){
         this.TA=TA;
     }

    @Override
    public void mouseClicked(MouseEvent e) {
        xFirstClick=xClick;
        yFirstClick=yClick;
        xClick=e.getX();
        yClick=e.getY();
        TA.CenterPanel.getGraphics().fillOval(xClick, yClick, 10, 10);
        if(ClickCounter!=0){
            SecondClick();
            ClickCounter++;
        }else{
            ClickCounter++;
        }
        System.out.println(ClickCounter);
    }

    public void SecondClick(){
        TA.CenterPanel.getGraphics().drawLine(xClick, yClick, xFirstClick,yFirstClick);
    }
}

xClick和yClick在第一次初始化时未初始化

为什么要将新的TesterApplication传递到鼠标侦听器中?然后将有两个实例。在TesterApplication中的主方法中,将“new TesterApplication()”更改为“this”。我得到错误“非静态变量this不能从静态上下文引用”我不明白,它们有值,Fillova()使用该值,我只是尝试添加System.out.println(单击计数器);System.out.println(xClick);System.out.println(yClick);,首先,单击“有所有值来构建圆”
 xFirstClick=xClick;
 yFirstClick=yClick;
 xClick=e.getX();
 yClick=e.getY();