Хорошо, поэтому я читаю изображения в подкаталоге в файле .jar, который называется 'images', и, конечно, я должен получить к ним доступ через поток, потому что он находится в .jar. Вот что читает изображения:
private Image wPawn = getImage(getClass().getResourceAsStream("images/WhitePawn.png")),
bPawn = getImage(getClass().getResourceAsStream("images/BlackPawn.png")),
wRook = getImage(getClass().getResourceAsStream("images/WhiteRook.png")),
bRook = getImage(getClass().getResourceAsStream("images/BlackRook.png")),
wKnight = getImage(getClass().getResourceAsStream("images/WhiteKnight.png")),
bKnight = getImage(getClass().getResourceAsStream("images/BlackKnight.png")),
wBishop = getImage(getClass().getResourceAsStream("images/WhiteBishop.png")),
bBishop = getImage(getClass().getResourceAsStream("images/BlackBishop.png")),
wQueen = getImage(getClass().getResourceAsStream("images/WhiteQueen.png")),
bQueen = getImage(getClass().getResourceAsStream("images/BlackQueen.png")),
wKing = getImage(getClass().getResourceAsStream("images/WhiteKing.png")),
bKing = getImage(getClass().getResourceAsStream("images/BlackKing.png"));
private Image getImage(InputStream stream){
Image i;
try{
i = ImageIO.read(stream);
stream.close();
} catch (IOException e) {
i = null;
}
return i;
}
Этот код работает, но игра в шахматы, которая работает, просто ужасно отстает от моей мыши. Раньше у меня был небольшой отдельный класс, который выполнял ту же самую работу, но это не привело к OutOfMemoryError.
Ошибка возникает из строки с i = ImageIO.read(stream);
и вызывается из объявлений изображения. Может ли кто-нибудь помочь найти лучший способ борьбы с ошибкой?