이미지 프레임을 jframe에로드하려고했습니다. 나는이 코드가 왜 작동하지 않는지 전혀 모른다. jpanels 및 jlabels를 사용하여 이미지를로드하는 다른 방법도 시도했지만 그 중 하나는 작동하지 않습니다. 나는 이것 때문에 내가 설정 한 JFrame과 관련이 있다고 생각한다. jpanels와 jlabels에서 멀리하고 싶습니다. 최소한 내 지식은 확장 할 수 없기 때문입니다. 누구든지 이미지 추가에 대한 해결책이 있다면 알려주십시오. 여기 코드는 다음과 같습니다 다시JFrames에 이미지를 추가 할 때의 문제
import java.awt.Canvas;
import javax.swing.JFrame;
import java.awt.*;
import javax.swing.ImageIcon;
import java.awt.event.KeyEvent;
import java.awt.Graphics;
public class Base extends Canvas implements Runnable {
private static final long serialVersionUID = 001;
private Image rock1;
private Image rock2;
private Image wood1;
private Thread thread;
private boolean running = (false);
private boolean paused = (false);
int x = 0;
int y = 0;
int z = 512;
private void start() {
if (running)
return;
running = true;
thread = new Thread(this);
}
public void run(){}
public Base(){}
public static void main(String[] Args) {
Base game = new Base();
JFrame frame = new JFrame();
frame.add(game);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 600);
frame.setLocationRelativeTo(null);
frame.setResizable(false);
frame.setVisible(true);
frame.setTitle("Game");
System.out.println("Running...");
game.start();
game.loadPics();
}
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_A) {
x = x - 5;
}
if (e.getKeyCode() == KeyEvent.VK_D) {
x = x + 5;
}
if (e.getKeyCode() == KeyEvent.VK_SPACE) {
y = y - 5;
}
if (e.getKeyCode() == KeyEvent.VK_SHIFT) {
y = y + 5;
}
if (e.getKeyCode() == KeyEvent.VK_W) {
z = z + 5;
}
if (e.getKeyCode() == KeyEvent.VK_S) {
z = z - 5;
}
if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
paused = (true);
}
}
public void loadPics(){
rock1 = new ImageIcon("C\\...\\rock1.png").getImage();
rock2 = new ImageIcon("C\\...\\rock2.png").getImage();
wood1 = new ImageIcon("C\\....\\wood1.png").getImage();
repaint();
}
public void paint(Graphics g){
while(paused = false){
g.drawImage(rock1, x, y, z, z, this);
g.drawImage(rock2, x + 512, y, z, z, this);
g.drawImage(wood1, x, y + 512, z, z, this);
try{
Thread.sleep(16);
}catch(Exception e){}
g.dispose();
}
}
}
, 나는 문제가 내 JFrame의에게 있습니다 생각하지만 내가 가장 숙련 된 자바 프로그래머가 아닙니다 때문에 너무 확신 할 수 없다. 어쨌든, 해결책이나 변경해야할 점이 있으면 도움을주십시오.
1) 'C \\ ... \\ rock1.png "'문자 그대로 코드에있는 것입니까? 'File f = new File ("C \\ ... \\ rock1.png");을 실행 해보십시오. System.out.println ("존재?"+ file.exists());'. 이러한 리소스는 일반적으로 파일이 아닌 URL로로드해야합니다. 그것은 약 12 시간마다 논의됩니다. 2) 모든 Swing 구성 요소를 사용하십시오. 3)'javax.swing.Timer'를 사용하여'Thread'와'sleep (n)'보다는'repaint()'를 호출하십시오. 4) 직접 만든 것이 아니라면'Graphics' 인스턴스를 처리하지 마십시오. –