Java 试图在图形中绘制图像图标,但无法正常工作
我试图在图形中绘制图像图标,但由于某些原因,我无法绘制图像。我想我做的每件事都是正确的,我不知道为什么它不起作用 我还尝试将Java 试图在图形中绘制图像图标,但无法正常工作,java,swing,Java,Swing,我试图在图形中绘制图像图标,但由于某些原因,我无法绘制图像。我想我做的每件事都是正确的,我不知道为什么它不起作用 我还尝试将ImageIcon更改为BufferedImage,但它也不起作用 有什么建议吗? 这是我的代码: package game; import javax.swing.JFrame; public class Main { public static void main(String[] args) { JFrame frame = new
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);
}
}
及
首先,您需要将
paintComponenet
方法重命名为paintComponent
,以覆盖超类的paintComponenet
方法。名称在重写方法中非常重要。正如安德鲁·汤普森(Andrew Thompson)所建议的,在覆盖的方法之上添加@Override
,这对于检查签名和打字非常方便。子类中的方法必须与超类中的方法具有相同的签名才能重写它。只有访问修饰符可以增加
之后,如果图像2.gif
与DirectionPanel
类位于同一个包中,则应删除/
名称前的/
祝您好运。首先,您需要将
paintComponenet
方法重命名为paintComponent
,以覆盖超类的paintComponenet
方法。名称在重写方法中非常重要。正如安德鲁·汤普森(Andrew Thompson)所建议的,在覆盖的方法之上添加@Override
,这对于检查签名和打字非常方便。子类中的方法必须与超类中的方法具有相同的签名才能重写它。只有访问修饰符可以增加
之后,如果图像2.gif
与DirectionPanel
类位于同一个包中,则应删除/
名称前的/
祝你好运。“名称在重写方法中非常重要。”这就是
@Override
符号非常方便的地方非常感谢,我没有在painComponenet中看到额外的“e”@试图理解,别忘了点击复选标记“接受”答案,让人们知道问题已经解决。也许你知道如何借助图形功能删除图像的白色背景?谢谢@AndrewThompson的提示,我会编辑答案。“名称在覆盖方法中非常重要。”这就是@Override
符号非常方便的地方非常感谢,我没有在painComponenet中看到额外的“e”@试着理解,不要忘了点击复选标记“接受”答案,这样人们就知道问题已经解决。也许你知道如何通过图形功能删除图像的白色背景?谢谢@andrewhompson的提示,我会编辑答案。
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();
}
}
}