2013-08-11 2 views
2

Дорогие замечательные люди stackoverflowПроблема с отображением изображения на Java

Группа моих друзей пытается сделать редактор уровней на Java.

У нас есть Jpanel вместо Jframe, и мы пытаемся поместить небольшие изображения на 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); 
    } 
}); 

Любая помощь очень ценится.

UPDATE:

В настоящее время у меня есть изображение, появляющееся, однако я не могу обновлять упомянутое изображение. Примечание Код ниже:

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); 
+0

И где код для показа изображений? Я ничего не вижу. – MightyPork

+0

Надеюсь, эта [тема] (http://stackoverflow.com/a/9866659/1057230) может немного помочь, особенно последняя ссылка, для этого случая :-) –

+0

Единственная пустая строка пробела в исходном коде * всегда * вдоволь. Пустые строки после '{' или before '}' также типично избыточны. –

ответ

2

Ну, я бы сказал, попробовать использовать графики, то есть вам нужно переопределить метод рисования; я бы рекомендовал вам поместить mouseX и mouseY в качестве глобальных переменных, хотя ...

// creating global image variable for use later 
Image imageVariable = new ImageIcon("image path").getImage(); 

public void paintComponent(Graphics g) { 
    // here you could either create a Graphics2D object 
    // Graphics2D g2 = (Graphics2D)g; 
    // or you could use the g parameter as it is, doesn't matter. 
    // use the global variable for the image to be drawn onto the screen 
    // use the global value of the mouseX and mouseY for where you click the mouse 
    // to place the image, and this should be it 
    g.drawImage(imageVariable, mouseX, mouseY, null); 
} 

Надеюсь, это поможет!

+0

Получение изображения каждый раз, когда запускается метод 'paint'? Было бы разумнее загрузить изображение один раз и только рисовать его во время 'paint'. – bas

+2

Да, вы в этом уверены. Я полностью оставил это вне игры. Спасибо, обновит – user2277872

+0

@bas @ user2277872 Не будет ли 'paintComponent' более идеальным? –

2

Если игра простая, то решение пользователя2277872 будет работать, и вы можете использовать graphics2D из java. Однако, если вы планируете более сложную игру (много взаимодействия, много текстур), то стандартная Java-платформа для 2D-графики окажется слишком медленной.

Если вы планируете такую ​​игру, я очень рекомендую либо обучения OpenGL или используя существующие рамки для графики, таких как

JMonkeyEngine (http://jmonkeyengine.com/) или Slick (http://slick.cokeandcode.com/index.php)

Подробнее информация: What should I use to display game graphics?

Смежные вопросы