您的代码中图片无法显示的原因可能有以下几个方面:
图片路径不正确。请确保图片文件在指定位置。
图片大小超出了限制。您使用了
getScaledInstance
方法来调整图片大小,但如果原始图片过大,可能会导致内存溢出或加载时间过长。建议您使用适当大小的图片。在某些情况下,可能需要使用绝对路径或 URL 来指定图像路径,而不是相对路径。例如,在 Eclipse 或其他 IDE 中运行时,相对路径可能与实际文件系统中的路径不同。
为了解决这个问题,请尝试以下几步:
确认图像文件位于指定位置,并且文件名和扩展名正确。
如果原始图像过大,请将其缩小到合适的尺寸并保存为新文件,然后再次尝试加载该文件。
尝试使用绝对路径或 URL 来指定图像路径,而不是相对路径。
修正后的代码如下(假设图像文件位于项目根目录下):
import java.awt.*;
import javax.swing.*;
public class MyFrame extends JFrame {
public static void createAndShow() {
JFrame frame = new JFrame("推箱子游戏");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
frame.setBackground(new Color(10, 60, 70));
frame.setResizable(false);
JPanel panel = new JPanel();
panel.setBackground(Color.PINK);
JButton button1 = new JButton("开始游戏");
JButton button2 = new JButton("游戏规则");
JButton button3 = new JButton("选择关卡");
panel.add(button1);
panel.add(button2);
panel.add(button3);
JLabel label = new JLabel();
ImageIcon icon = new ImageIcon("image.jpg"); // 修改图片路径为绝对路径或 URL
Image img = icon.getImage().getScaledInstance(300, 150, Image.SCALE_DEFAULT);
icon.setImage(img);
label.setIcon(icon);
JLabel label2 = new JLabel("开始推箱子之旅吧!!!", JLabel.CENTER);
frame.add(label, BorderLayout.PAGE_START);
frame.add(panel, BorderLayout.PAGE_END);
panel.add(label2);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(MyFrame::createAndShow);
}
}