2

親愛なるスタックオーバーフローの素晴らしい人々

私の友人のグループが 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);
4

2 に答える 2

2

ゲームが単純な場合は、user2277872 のソリューションが機能し、java から graphics2D を使用できます。ただし、より高度なゲーム (多くのインタラクション、多くのテクスチャ) を計画している場合、2D グラフィックス用のデフォルトの Java フレームワークは遅すぎることがわかります。

このようなゲームを計画している場合は、OpenGL を学習するか、次のようなグラフィック用の既存のフレームワークを使用することを強くお勧めします。

JMonkeyEngine ( http://jmonkeyengine.com/ ) または Slick ( http://slick.cokeandcode.com/index.php )

詳細:ゲーム グラフィックを表示するには何を使用すればよいですか?

于 2013-08-11T01:09:59.497 に答える