如何绘制在try / catch中创建的图像?

时间:2020-08-13 18:49:34

标签: java intellij-idea try-catch awt

我正在学习Java,并且已经使用FileImage类型转换为IOException,但是如何在{{1 }}?

Image

因为现在IntelliJ无法识别图像。

1 个答案:

答案 0 :(得分:2)

在这种情况下-因为paintComponent会经常被调用,并且您只想加载一次图像,请将图像放入字段中。

private Image image;

...() {
    try {
        File obraz = new File("C:\\Users\\ender\\Pictures\\logo.jpg");
        image = ImageIO.read(obraz);
    } catch (IOException ex) {
         ex.printStackTrace();
    }
}

...() throws IOException {
    File obraz = new File("C:\\Users\\ender\\Pictures\\logo.jpg");
    image = ImageIO.read(obraz);
}

@Override
public void paintComponent(Graphics g){
    Graphics2D g2 = (Graphics2D) g;
    if (image != null) {
        g2.drawImage(image);
    }
}

我展示了两种解决方案:

  • 像现在一样捕获异常:但是应该做一些事情,向用户显示一条错误消息,表明文件logo.jpg不存在
  • 通过异常传递异常,这通常是更好的解决方案。

惯例是使用@Override,因为这样会捕获public void paintComponent(Graphics2D g)public void painComponent(Graphics g)等错字。