이것은 내 첫 번째 Java GUI 프로그램이며 실제로는 두 번째 Java 프로그램이므로 내게는 쉽게 받아 들일 수 있습니다 :) 내 프로그램은 인터넷 검색 및 독서 자바 문서를 많이 읽은 결과입니다. 내 문제는 내가 52 카드의 스프라이트 시트가 있고, subImage를 사용하여 버퍼 이미지 배열에 개별적으로 이러한 카드를 저장하려고 시도하고 테스트 목적으로 만 모든 52를 창에 표시한다는 것입니다. 파일이 올바른 디렉토리에 있는지 확인했습니다. 내 문제는 Jlabels를 사용하는 것 또는 단순히 어리석은 실수라고 생각합니다. 어쨌든, 여기JLabel은 이미지를 표시하지 않습니다 - NullPointerException
package gui;
import javax.swing.JFrame;
import java.awt.Color;
public class cards extends JFrame {
private static final long serialVersionUID = 1L;
public cards(){
setTitle("Poker");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(1000, 700);
setLocationRelativeTo(null);
this.getContentPane().setBackground(Color.GREEN);
setVisible(true);
setResizable(false);
add(new crdimgs());
}
public static void main(String[] args){
new cards();
}
}
오류가 나는 순간에받는 스프라이트 시트 분할을
package gui;
import java.awt.GridLayout;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class crdimgs extends JPanel {/**
*
*/
static final long serialVersionUID = 1L;
public final int width = 10;
public final int height = 20;
public int rows = 13;
public int cols = 5;
public BufferedImage image;
File cardimg = new File("Cards.jpg");
BufferedImage cards[];
public void loadsplit(File loadimage){
try{
image = ImageIO.read(loadimage);
} catch(Exception error){
System.out.print("error");
}
cards = new BufferedImage[cols*rows];
}
public crdimgs() {
loadsplit(cardimg);
setLayout(new GridLayout(rows, cols, 1, 1));
int x = 0;
int y = 0;
int subimg = 0;
for(int i = 0; i < rows; i++)
{
JPanel panel = new JPanel();
cards[subimg] = new BufferedImage(width, height, 5);
cards[subimg] = image.getSubimage(x, y, width, height);
panel.add(new JLabel(new ImageIcon(cards[subimg])));
add(panel);
x+=width;
subimg++;
}
y+=height;
x=0;
}
}
}
을 수행 내 수업 그리고 내 주요 클래스는 다음과 같습니다
가errorException in thread "main" java.lang.NullPointerException
at gui.crdimgs.<init>(crdimgs.java:53)
at gui.cards.<init>(cards.java:22)
at gui.cards.main(cards.java:28)
참고하여'Exception'의 첫 줄을 ...'스레드 errorException "주요"java.lang.NullPointerException' ,'ImageIO.read' 문에서 오는'error'로 시작합니다. 파일을 읽으 려 할 때 뭔가 잘못되었습니다. 호버크라프트의 조언에 따라 – MadProgrammer