【发布时间】:2016-05-24 12:23:32
【问题描述】:
我正在尝试在图形中绘制图像图标,但由于某种原因我无法绘制图像。我想我做的一切都是正确的,我不知道为什么它不起作用。
我也试过从ImageIcon改成BufferedImage,也不管用。
有什么建议吗?
这是我的代码:
package game;
import javax.swing.JFrame;
public class Main {
public static void main(String[] args)
{
JFrame frame = new JFrame ("Space Ship Game");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new DirectionPanel());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
和
package game;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
public class DirectionPanel extends JPanel
{
private final int WIDTH = 1300, HEIGHT = 900;
private final int JUMP = 10;
private final int IMAGE_SIZE = 31;
private ImageIcon spaceShipImage;
private int x, y;
public DirectionPanel()
{
addKeyListener (new DirectionListener());
x = WIDTH /2;
y = HEIGHT /2;
try
{
spaceShipImage = new ImageIcon(getClass().getResource("/2.gif"));
}
catch (Exception e)
{
System.out.println("sss");
}
setBackground(Color.BLACK);
setPreferredSize (new Dimension(WIDTH, HEIGHT));
setFocusable(true);
}
public void paintComponenet (Graphics g)
{
super.paintComponent(g);
spaceShipImage.paintIcon(this, g, x, y);
}
private class DirectionListener extends KeyAdapter
{
public void keyPressed (KeyEvent event)
{
switch (event.getKeyCode())
{
case KeyEvent.VK_UP:
System.out.println("Dsfdsf");
y -= JUMP;
break;
case KeyEvent.VK_DOWN:
y += JUMP;
break;
case KeyEvent.VK_LEFT:
x -= JUMP;
break;
case KeyEvent.VK_RIGHT:
x += JUMP;
break;
}
repaint();
}
}
}
【问题讨论】: