JPanelにキーリスナーを実装してもらいました。別のクラスから取得した画像を取得して表示します。NAキーリスナーはそのクラスに渡され、多くの画像の1つを取得して、ある方向に2px移動します。私の問題は、repaint()を呼び出しても古い画像が消えないため、画像の行が表示されることです。クラスを画像と組み合わせて、JPanelクラスを1つのバイファイナルにまとめると、完璧に機能しました。
私はこれについていくつかの調査を行い、ダブルバッファリングを見つけました。これを行う必要がある場合、1つの大きなクラスと個別のクラスに組み合わせるとなぜ機能するのでしょうか。これがJPanelクラスの私のコードです。誰か助けてもらえますか?ダブルバッファリングが答えである場合、誰かがそれを私に説明できますか。理論はわかりますが、コードはわかりません。
import java.awt.Graphics;
import javax.swing.JPanel;
import java.awt.Image;
import java.awt.Graphics2D;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class picPanel extends JPanel
{
walker w;
JPanel panel;
public picPanel()
{
w=new walker();
addKeyListener(new TAdapter());
setFocusable(true);
System.out.println(w.getX());
System.out.println(w.getY());
if(w.getImg()==null)
System.out.println("is emty");
repaint();
//test();
}
public void paintComponent(Graphics g)
{
System.out.println("Hello");
//Graphics2D g2d = (Graphics2D)g;
Image m = w.getImg();
g.drawImage(m,w.getX(),w.getY(),this);
}
private class TAdapter extends KeyAdapter
{
public void keyPressed(KeyEvent e)
{
w.keyPressed(e);
System.out.println("Hello");
repaint();
}
}
}