イメージを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