JPanel에서 키 수신기를 구현했습니다. 다른 클래스에서 가져온 이미지를 가져 와서 표시합니다. NA 키 리스너는 해당 클래스로 전달되어 많은 이미지 중 하나를 가져 와서 한 방향으로 2 픽셀 이동합니다. 내 문제는 repaint()를 호출 할 때 오래된 이미지가 사라지지 않는다는 것입니다. 그래서 이미지 라인을 얻습니다. 문제는 내가 이미지와 JPanel 클래스로 클래스를 결합하여 하나의 바이 파이널에 완벽하게 적용되었다는 것입니다.
나는 이것에 대한 연구를했고 이중 버퍼링을 발견했다. 이 작업을 수행해야한다면 왜 하나의 큰 클래스 대 다른 클래스로 결합 될 때 작동할까요? 다음은 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();
}
}
}
'Image m = w.getImg();'앞에'g.clearRect (0, 0, getWidth(), getHeight());를 추가하려고 했습니까? 희망이 당신이 원하는 것입니다 :-) –