Не могу понять, почему моя картинка не рисуетсяJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Не могу понять, почему моя картинка не рисуется

Сообщение Anonymous »

Я пытаюсь нарисовать шахматную фигуру на созданной мной доске, но постоянно получаю сообщение об ошибке: кажется, мое изображение невозможно найти.
Exception in thread "main" java.lang.IllegalArgumentException: input == null!`
at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1358)`
at main.pieces.Piece.(Piece.java:21)`
at main.pieces.Knight.(Knight.java:8)`
at main.Board.addPieces(Board.java:23)`
at main.Board.(Board.java:19)`
at main.App.main(App.java:14)

Я пытался переместить папку res, но фрагмент все еще не рисуется. Я даже дважды проверил свой файл, чтобы убедиться, что это PNG.
Вот мой код:
app.java
package main;
import javax.swing.*;
import java.awt.*;

public class App {
public static void main(String[] args) throws Exception {

JFrame frame = new JFrame();
frame.getContentPane().setBackground(new Color(30, 30, 30));
frame.setLayout(new GridBagLayout());
frame.setMinimumSize(new Dimension(1000, 1000));
frame.setLocationRelativeTo(null);

Board board = new Board();
frame.add(board);

frame.setVisible(true);

}
}

board.java
package main;
import main.pieces.Piece;
import main.pieces.Knight;
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;

public class Board extends JPanel {

public int tileSize = 85;

int cols = 8;
int rows = 8;

ArrayList
pieceList = new ArrayList();

public Board() {
this.setPreferredSize(new Dimension(cols * tileSize, rows * tileSize));
addPieces();
}

public void addPieces() {
pieceList.add(new Knight(this, 2, 0, false));
}

public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;

for (int r = 0; r < rows; r++)
for (int c = 0; c < cols; c++) {
g2d.setColor((c + r) %2 == 0 ? new Color(230, 230, 230) : new Color(0, 0, 0));
g2d.fillRect(c * tileSize, r * tileSize, tileSize, tileSize);
}

for (Piece piece : pieceList) {
piece.paint(g2d);
}
}
}

piece.java
package main.pieces;

import main.Board;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;

public class Piece {

public int col, row;
public int xPos, yPos;

public boolean isWhite;
public String name;
public int value;

BufferedImage sheet;
{
try {
sheet = ImageIO.read(ClassLoader.getSystemResourceAsStream("pieces.png"));
} catch (IOException e) {
e.printStackTrace();
}
}

protected int sheetScale = sheet.getWidth() / 6;

Image sprite;

Board board;

public Piece(Board board) {
this.board = board;
}

public void paint(Graphics2D g2d) {

g2d.drawImage(sprite, xPos, yPos, null);

}

}

knight.java
package main.pieces;

import main.Board;
import java.awt.image.BufferedImage;

public class Knight extends Piece {
public Knight(Board board, int col, int row, boolean isWhite) {
super(board);
this.col = col;
this.row = row;
this.xPos = col * board.tileSize;
this.yPos = row * board.tileSize;

this.isWhite = isWhite;
this.name = "Knight";

this.sprite = sheet.getSubimage(3 * sheetScale, isWhite ? 0 : sheetScale, sheetScale, sheetScale).getScaledInstance(sheetScale, sheetScale, BufferedImage.SCALE_SMOOTH);

}
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... -wont-draw
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»