이미지가 JPanel에 표시되는 프로그램을 작성하고 있지만 새 이미지를 열 때 기존 이미지를 바꾸는 데 문제가 있습니다. ImageIcon에서 이전 이미지를 제거하고 새 이미지로 교체하는 쉬운 방법이 있습니까? 나는 다음과 같이 생각했다. mp.remove (pic);이 여기에서 작동하지만 ImageIcon에서는 지원되지 않는다고합니다.JPanel의 현재 이미지를 다른 것으로 대체하십시오.
class MapPanel extends JPanel {
public MapPanel(String filename) {
if(mp == null) {
pic = new ImageIcon(filename);
int w = pic.getIconWidth();
int h = pic.getIconHeight();
setPreferredSize(new Dimension(w, h));
setMinimumSize(new Dimension(w, h));
setMaximumSize(new Dimension(w, h));
setLayout(null);
}
else { int confirm =
JOptionPane.showConfirmDialog(MapProgram.this, "Unsaved changes, " +
"do you really want to open a new map?",
"New map", JOptionPane.OK_CANCEL_OPTION);
if (confirm != JOptionPane.OK_OPTION)
return;
// Remove the current image and display the new one choosen
// from the JFileChooser.
}
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(pic.getImage(), 0, 0, this);
}
}
새로운 이미지를 설정하는 방법은 무엇입니까? – XtremeBaumer
어떻게'그림 (pic) '을 사용하고 있습니까? 당신이 우리에게 보여준 유일한 것은 창조와 할당'pic = new ImageIcon (filename);과 이미지 차원을 얻는 것입니다. – Thomas
죄송합니다. 일부 코드가 어떻게 든 사라졌습니다. 업데이트 된 코드를 참조하십시오. – Andpej