Java 使用Netbeans完美地为乒乓球绘制移动划桨的麻烦

Java 使用Netbeans完美地为乒乓球绘制移动划桨的麻烦,java,swing,netbeans,this,Java,Swing,Netbeans,This,我想打乒乓球。我把这个程序发给了一个朋友,当他第一次运行它时,他收到了我的错误,但后来运行得很好。我似乎总是有毛病。我的桨可以上下移动。它似乎移动正确,并在正确的位置绘制,但它总是闪烁到开始位置,然后再次返回。它看起来像是在开始位置绘制一次,然后在正确的位置绘制,在两个位置之间永远闪烁 NetBeans对此表示不满;。上面写着“在构造函数中泄漏”。这是我的代码:(提前道歉,第一次发帖) 如果有人想看一下,我从netbeans导出了它: 还有我划桨的密码 包装为.hi.vidmotsforitu

我想打乒乓球。我把这个程序发给了一个朋友,当他第一次运行它时,他收到了我的错误,但后来运行得很好。我似乎总是有毛病。我的桨可以上下移动。它似乎移动正确,并在正确的位置绘制,但它总是闪烁到开始位置,然后再次返回。它看起来像是在开始位置绘制一次,然后在正确的位置绘制,在两个位置之间永远闪烁

NetBeans对此表示不满;。上面写着“在构造函数中泄漏”。这是我的代码:(提前道歉,第一次发帖)

如果有人想看一下,我从netbeans导出了它:

还有我划桨的密码 包装为.hi.vidmotsforitun.pong2.teikning

import java.awt.Color;
import java.awt.Graphics;


public class Spilari1 {

    private final int breidd = 10 ;
    private final int lengd = 75;
    private int y = (Leikbord.GLUGGI_HAED/2)-lengd/2;
    private int yHradi = 0;


    public Spilari1()
    {
    }

    public void uppfaera()
    {
        y = y + yHradi;
        System.out.println("HRAÐI ER "+yHradi);
    }
    public void paint(Graphics g)
    {
        g.setColor(Color.BLUE);
        g.fillRect(25, y, breidd, lengd);
        System.out.println("Y er "+y);

    }
        public void setyHradi(int hradi)
    {
        yHradi = hradi;
    }



}

根据这个线程(“”),问题是您在未完全初始化(在构造函数中)的情况下将其引用传递给外部类。因此,您需要稍后在初始化方法中执行此操作

如果时间和actionlistener发生冲突,您知道什么是分离时间和actionlistener的最佳方法吗?可以使用类似init()的方法,将actionlistener行放入其中,并在调用构造函数后从外部调用它。Like LeikGluggi l=新的LeikGluggi;l、 init();这是一个警告,它告诉您已传递的对象(在本例中传递给密钥侦听器)可能未完全无效,如果对象(密钥侦听器)在构造函数完成之前尝试访问“this”对象的属性,则可能会导致问题。在这个特殊的例子中,它应该是一个问题。我通过将桨式窗口中的y链接到public static In来修复我的程序,使其不再是私有int。我不知道为什么它修复了我的问题,但它确实。。。我仍然担心听众的问题,你知道我怎样才能把他们安排得不同吗?
import java.awt.Color;
import java.awt.Graphics;


public class Spilari1 {

    private final int breidd = 10 ;
    private final int lengd = 75;
    private int y = (Leikbord.GLUGGI_HAED/2)-lengd/2;
    private int yHradi = 0;


    public Spilari1()
    {
    }

    public void uppfaera()
    {
        y = y + yHradi;
        System.out.println("HRAÐI ER "+yHradi);
    }
    public void paint(Graphics g)
    {
        g.setColor(Color.BLUE);
        g.fillRect(25, y, breidd, lengd);
        System.out.println("Y er "+y);

    }
        public void setyHradi(int hradi)
    {
        yHradi = hradi;
    }



}