我正在尝试使用JFrame创建游戏,它需要我绘制图像。我正在使用graphics2D来绘制它们,但我无法弄清楚为什么这没有给我输出:
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
Image img = Toolkit.getDefaultToolkit().getImage("src/resources/main/my_image");
g2d.drawImage(img, 0, 0, null);
g2d.finalize();
}
我无法找到一种方法来绘制实际有用的图像。
答案 0 :(得分:1)
首先关于"资源/主要" (以及缺少的文件扩展名)。如果这恰好是 maven 项目,则路径应为:
src/main/resources/my_image.png
要读取资源文件,可以执行以下操作:
Image img = ImageIO.read(getClass().getResourceAsStream("/my_image.png"));
此文件随后驻留在类路径上的类中,可以通过解压缩来检查jar中的路径。 如果路径不正确,则会收到NullPointerException。
答案 1 :(得分:0)
1。您的第一个错误可能与Java Tutorial中所述相同。你不应该覆盖paint()
:
paintComponent
方法是进行所有自定义绘制的地方。
2。根据this answer,您也不应该在图形对象上调用finalize()
,但据我所知,它不应该干扰您的绘图。有关此处不需要finalize()
的原因的其他详细信息,请参阅this answer。
3。您是否检查过您的组件是否在屏幕上显示?如果它的大小为0x0,则可能会绘制图像,但仍然无法看到。我发现检查组件是否被看到的一种简单方法是(暂时)将其边框更改为绿线以验证其大小和位置。
4. 请参阅Joop Eggen's答案,了解资源加载情况,这也可能导致您无法看到图片。