親愛なるスタックオーバーフローの素晴らしい人々
私の友人のグループが Java でレベルエディタを作ろうとしています。
Jframe の代わりに Jpanel があり、文字列として保存されたファイルパスから小さな画像を Jpanel に配置しようとしています。最後に、ドロップできる画像のリストが必要です。これまでのところ、いくつかの方法を試しましたが、うまくいきませんでした。
画像を読み込むことはできますが、これらの画像を実際に表示することはできません。この問題を解決する最善の方法は何でしょうか?
以下は、これまでのサンプルです。
EnemyPlacementGrid = new JPanel();
EnemyPlacementGrid.addMouseListener(new MouseAdapter() {
//@Override
public int mouseX;
public int mouseY;
public void mouseClicked(MouseEvent arg0) { //what happens when you click in the EnemyPlacementGrid
System.out.println("Correct Area for placement");
mouseX = arg0.getX();
mouseY = arg0.getY();
//System.out.println("X:" + mouseX + ", Y:" + mouseY );
Enemy newEnemy = workingEnemy.cloneSelf();
newEnemy.setLocation(mouseX, mouseY);
System.out.println("newEnemy object: " + newEnemy);
System.out.println(newEnemy.weaponList);
currentWave.addEnemy(newEnemy);
System.out.print(currentLevel);
}
});
どんな助けでも大歓迎です。
アップデート:
現在、画像が表示されていますが、その画像を更新できません。以下のコードに注意してください。
public void run() {
try {
BufferedImage img = ImageIO.read(new File(IMG_PATH));
ImageIcon icon = new ImageIcon(img);
WaveScreen frame = new WaveScreen();
JPanel panel = (JPanel)frame.getContentPane();
JLabel label = new JLabel();
label.setIcon(new ImageIcon("images/map_on.png"));// your image here
panel.add(label);
frame.setVisible(true);
panel.add(label);
panel.repaint();
} catch (Exception e) {
e.printStackTrace();
}
更新、コメントから試した方法:
Graphics2D g = null;
Graphics2D g2 = (Graphics2D)g;
Image imageVariable = new ImageIcon("images/map_on.png").getImage();
g.drawImage(imageVariable, mouseX, mouseY, null);