Ich habe ein paar Probleme bekommen ein Bild in Java gezeichnet. Es gibt keine Konsolenfehler und es druckt 'Zeichnung'. Ich glaube, ich lade das Bild falsch, aber ich kann den richtigen Weg nicht finden. Wenn mir jemand den richtigen Weg sagen könnte, wäre das toll.Zeichnung Bild in Jframe Spiel
package platformer;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.util.List;
import java.util.ArrayList;
import javax.swing.Timer;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import java.awt.Image;
public class test2 extends JPanel implements KeyListener, ActionListener {
int Width = 1000;
int Height = 600;
private static Image offScreenBuffer;// needed for double buffering graphics
private Graphics offScreenGraphics;// needed for double buffering graphics
private BufferedImage[] img = new BufferedImage[1];
public test2() {
}
public void paint(Graphics g) {
super.paint(g);
g.drawImage(img[0],0,0,null);
}
public void timer1() {
int delay = 30; // milliseconds
new Timer(delay, this).start();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void actionPerformed(ActionEvent evt) {
}
public static void main(String args[]) throws InterruptedException, Exception {
test2 test2 = new test2();
JFrame frame = new JFrame("platformer");
frame.setSize(test2.Width, test2.Height);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setBackground(Color.green);
frame.add(test2);
frame.setResizable(false);
frame.addKeyListener(test2);
test2.init();
test2.timer1();
// What to do after the program starts
while (true) {
test2.repaint();
}
}
public void init() {
try {
URL url = new URL("platform.png");
img[0] = ImageIO.read(url);
} catch (IOException e) {
}
}
public void keyTyped(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
}
Dies beantwortet Ihre Frage nicht, aber da Sie nur ein Bild haben, brauchen Sie kein Array. Mach einfach 'private Image img;'. –
Ich schlage auch vor, Namen mit Zahlen zu beenden. Klassennamen sollten aussagekräftiger sein. Wenn Sie Variablennamen mit Zahlen beenden, benötigen Sie wirklich eine 'List' oder ein' Array. –
Der Code, den Sie hier gepostet haben, wird durch all die zusätzlichen Dinge kompliziert, die in Ihrem Spiel involviert sind. Ich schlage vor, eine andere Klasse als Beispiel zu erstellen, die nur ein Bild lädt und es anzeigt. Wenn Sie weiterhin Probleme haben, bearbeiten Sie diese Frage mit Ihrer vereinfachten Version. –