Java-使用非常小的代码时图像不会绘制到屏幕上
Java-Image does not draw to screen while using a very small code
我根据自己正在编写的另一个程序中的一个问题做了一个小测试。
我需要在屏幕上绘制图像,但它不起作用。
但是,我可以在屏幕上绘制矩形,我不明白
代码:
主要class:
package test;
import javax.swing.JFrame;
public class Main extends JFrame{
private static final long serialVersionUID = 1L;
final static int WW = 800;
final static int WH = 600;
public Main(){
setSize(WW,WH);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setTitle("Space Game");
add(new testClass());
setVisible(true);
}
public static void main(String[] args) {
new Main();
}
}
测试类class:
package test;
import java.awt.*;
import javax.swing.*;
public class testClass extends JPanel{
private Image image;
public testClass(){
ImageIcon image = new ImageIcon("spaceship.png");
}
public void paintComponent(Graphics g){
g.setColor(Color.BLACK);
g.fillRect(50,50,50,50);
g.drawImage(image,0,0,null);
}
}
请帮助并解释为什么它不起作用。
对不起英语不好,任何帮助都很感激:)
*如果我的问题是新手,我很抱歉,我是编程新手...
您的代码中存在一个重大错误:
ImageIcon image
具有方法作用域,而 Image image
具有 class 作用域。因此,您尝试在 paintComponent
中绘制的图像与您在构造函数中加载的图像不同。
修复该问题还不足以使其正常工作。我建议做的是以下内容。使用 Image
。然后,在构造函数中,使用 image = ImageIO.read(new File("spaceship.png"));
对其进行分配
我根据自己正在编写的另一个程序中的一个问题做了一个小测试。 我需要在屏幕上绘制图像,但它不起作用。 但是,我可以在屏幕上绘制矩形,我不明白
代码:
主要class:
package test;
import javax.swing.JFrame;
public class Main extends JFrame{
private static final long serialVersionUID = 1L;
final static int WW = 800;
final static int WH = 600;
public Main(){
setSize(WW,WH);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setTitle("Space Game");
add(new testClass());
setVisible(true);
}
public static void main(String[] args) {
new Main();
}
}
测试类class:
package test;
import java.awt.*;
import javax.swing.*;
public class testClass extends JPanel{
private Image image;
public testClass(){
ImageIcon image = new ImageIcon("spaceship.png");
}
public void paintComponent(Graphics g){
g.setColor(Color.BLACK);
g.fillRect(50,50,50,50);
g.drawImage(image,0,0,null);
}
}
请帮助并解释为什么它不起作用。 对不起英语不好,任何帮助都很感激:) *如果我的问题是新手,我很抱歉,我是编程新手...
您的代码中存在一个重大错误:
ImageIcon image
具有方法作用域,而 Image image
具有 class 作用域。因此,您尝试在 paintComponent
中绘制的图像与您在构造函数中加载的图像不同。
修复该问题还不足以使其正常工作。我建议做的是以下内容。使用 Image
。然后,在构造函数中,使用 image = ImageIO.read(new File("spaceship.png"));