создание background через переопределение paintComponent

164
16 июля 2018, 02:50

помогите разобраться, хочу сделать background (добивать изображение на основной фон), собственно добавление идет строками

BufferedImage image = ImageIO.read(new File("bg.jpg"));
g.drawImage(image, 0, 0, this);  

в итоге он жалуется на read(new File("bg.jpg") , мол это необработанный тип исключения, и просит добавить IOException, но добавить его в painComponent я тоже не могу - несовмещенный тип. Помогите разобраться что к чему, и как это есть.

сам исходник

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
public class GameField extends JPanel {
    private int width;
    private int height;
    private final int SIZE = 13;
    private int cellHeight;
    public GameField(){
    }
    @Override
    protected void paintComponent(Graphics g){
        width = getWidth();
        height = getHeight();
        cellHeight = height/SIZE;
        g.setColor(Color.WHITE);
        BufferedImage image = ImageIO.read(new File("bg.jpg"));
        g.drawImage(image, 0, 0, this);                         
        g.fillRect(0,0,width,height);
        g.setColor(Color.BLACK);
        g.drawLine(width/2, 0, width/2, height);
        for (int i = 0; i < SIZE; i++){
            g.drawLine(width/2, i*cellHeight, width,i*cellHeight);
        }
   }
}
Answer 1

Метод paintComponent может вызываться очень часто, поэтому читать файл в нём не стоит. Да и архитектурно это сомнительное решение. Лучше перенести считывание в конструктор:

public class GameField extends JPanel {
    ...
    private BufferedImage image;
    public GameField() throws IOException {
        image = ImageIO.read(new File("bg.jpg"));
    }
    ...
}
READ ALSO
Ускорить/Оптимизировать

Ускорить/Оптимизировать

Необходимо получить все данные игрока из базы данных, для проверки насколько это быстро произойдет я создал цикл из 100 юзеров

224
Servlet отправка файла клиенту

Servlet отправка файла клиенту

Мне нужно реализовать передачу файла с сервера на клиентФайл выбирается сервером и отправляется клиенту

210
Ошибка в java коде. (андроид приложение)

Ошибка в java коде. (андроид приложение)

В одной из папок приложения под андроид есть файл (а точнее несколько файлов) в одной и той-же ошибкой- "Unknown entity 'R'"

162
Как получить результат, при выполнении JUnit?

Как получить результат, при выполнении JUnit?

Код который нужнно протестировать

201