[英]Trying to draw an image icon in graphics but it wont work
我正在嘗試在圖形中繪制圖像圖標,但是由於某種原因我無法繪制圖像。 我想我做的所有事情都是正確的,我不知道為什么它不起作用。
我也嘗試從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();
}
}
}
首先,您需要將paintComponenet
方法重命名為paintComponent
,以便覆蓋超類的paintComponenet
方法。 名稱在覆蓋方法中非常重要。 正如安德魯·湯普森 ( Andrew Thompson)建議的那樣,在您要覆蓋的方法之上添加@Override
非常方便檢查簽名和錯別字。 子類中的方法必須具有與超類中的該方法相同的簽名才能覆蓋它。 只能增加訪問修飾符。
之后,如果您的圖片2.gif
與DirectionPanel
類位於同一包中,則應在2.gif
名稱前刪除/
。
祝好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.