새로운 페인트 디렉토리로 페인트 디렉토리를 보내고 그 이미지로 이미지 변수를 변경하여 페인트되는 이미지를 변경하려고합니다. 나는 디렉토리가 통과하고 있지만 이미지가 결코 바뀌지 않도록 코드를 테스트했다. 그들은 단지 새로운 이미지를 무시하고 이전 이미지를 유지하는 것처럼 보입니다. 지저분한 코드에 대해 사과하지만 시간이 지나면 이미지가 변경되고 좌절감이 생겨나 고 있습니다.페인트 패널의 페인트 된 이미지 변경하기
public class painting extends JPanel {
private String BGDir;
private String Dir;
private int Width;
private int Height;
private Image image1;
private Image image2;
public painting(int h, int w, String BG, String Char) {
BGDir = BG;
Dir = Char;
Height = h;
Width = w;
System.out.println(BGDir);
System.out.println(Dir);
try {
image1 = (new ImageIcon(Char)).getImage();
image2 = (new ImageIcon(BG)).getImage();
} catch (Exception e) {
System.out.println("no such file");
}
repaint();
}
public void update(Graphics g) {
paintComponent(g);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
System.out.println(BGDir);
System.out.println(Dir);
// PAINTS THE BACKGROUND
g2.drawImage(image2, 0, 0, getWidth(), (int) (getWidth() * .533), null);
// PAINTS THE SCALED CHARACTER
g2.drawImage(image1, (int) (Width/6.22), (int) (Height * .246),
(int) (Height * .754 * .2376), (int) (Height * .754), null);
repaint();
}
}
코드는 상단의 텍스트 단락에 걸린 것처럼 보입니다! 전체 클래스를 읽을 수 있도록 편집하는 것이 좋습니다. 이미지가 업데이트 될 때마다 레코드에 대해'repaint()'를 호출해야합니다. 이 클래스 외부의 이미지를 업데이트하는 경우 새 이미지가 설정된 후에 repaint()를 호출해야합니다. – Gorbles
나는 그 감사를 시도 할 것이다. 코드를 읽을 수있게 편집했습니다. 미안합니다. 저는 실제로 생성자를 통해 페인팅 클래스에 새 이미지 데이터를 보내고 시도했을 때 작동하지 않는 것처럼 내부적으로 이미지를 업데이트하려고합니다. 외부로 수행하기 – JoeyTheAsian
문제는 생성자를 통해 데이터를 보낼 때마다 그림의 새 인스턴스를 만들고 그 인스턴스가 JFrame에 추가되지 않아 표시되지 않는다는 것입니다. 그것을 고칠 방법이 있습니까? JPanel을 제거하고 새로운 것을 추가 한 다음 다시 칠해 보았지만 작동하지 않는 것 같았습니다 – JoeyTheAsian