Hallo,
ich programmiere gerade meine erste Grafik-Ausgabe ohne "StdDraw" und bin da etwas überfordert.
Endziel ist es, ein Spielfeld-Array der Größe 20x20 auszugeben, aber ich kriege noch nicht mal ein normales Bild zum Laufen.
Habe mir via google&co. folgendes zusammengeproggt:
Das soll jetzt auch nur zum Testen sein, das mit dem Spielfeld würde ich später implementieren.
Habe viel im Internet gesucht und da wurde es halt genauso gemacht und ich versteh einfach nicht, wo der Fehler ist.
Das komische ist auch, dass wenn ich die 4.-letzte Zeile mit dem "g.fillRect" wieder mit reinnehme, das Rechteck gezeichnet wird.
Was ich auch nicht so ganz verstehe ist, wie das mit dem "Graphics g" funktioniert. Ich nehme mal an, das ist ein Objekt, das JPanel automatisch initialisiert!?
Habe allerdings in einigen (wenigen) Beispielen gesehen, dass Graphics g nochmal selber erstellt wurde.
Achso und das BufferedImage müsste doch auch fertig geladen sein, er gibt nämlich aus, wie breit bzw hoch das ist.
ich programmiere gerade meine erste Grafik-Ausgabe ohne "StdDraw" und bin da etwas überfordert.
Endziel ist es, ein Spielfeld-Array der Größe 20x20 auszugeben, aber ich kriege noch nicht mal ein normales Bild zum Laufen.
Habe mir via google&co. folgendes zusammengeproggt:
Code:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Grafik extends JPanel {
JFrame frame;
JPanel Spielfeld;
final public int FeldSize = 30;
BufferedImage Test;
File file;
int hoehe, breite;
public Grafik(){
frame = new JFrame("Test");
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setSize(1024,768);
frame.setPreferredSize(frame.getSize());
frame.setLocationRelativeTo(null);
frame.setResizable(false);
this.setSize(FeldSize* 20, FeldSize*20);
this.setPreferredSize(new Dimension(FeldSize*20, FeldSize*20));
this.setBackground(Color.WHITE);
this.setOpaque(false);
this.setOpaque(false);
Spielfeld = new JPanel();
Spielfeld.setSize(new Dimension(frame.getSize()));
Spielfeld.setPreferredSize(new Dimension(frame.getSize()));
Spielfeld.setLayout(new BorderLayout());
Spielfeld.setBackground(Color.WHITE);
Spielfeld.add(this, BorderLayout.EAST);
frame.getContentPane().add(Spielfeld);
frame.pack();
frame.setVisible(true);
// file = new File("Bombe.gif");
// HIER LADE ICH DAS BILD
java.net.URL pic_url = getClass().getClassLoader().getResource("Bombe.gif");
try{
Test = ImageIO.read(pic_url);
hoehe = Test.getWidth();
breite = Test.getHeight();
System.out.println("Hoehe" + hoehe + " Breite " + breite);
} catch (IOException ioex){
// System.out.println("LADEFEHLER");
}
// Graphics g = Test.getGraphics();
// g.drawImage(Test, 50,50, this);
}
protected void paintComponent(Graphics g){
super.paintComponent(g);
// g.fillRect(100,100,150,250);
// g.drawString("This is my custom Panel!",10,20);
g.drawImage(Test, 5, 5, null);
}
}
Das soll jetzt auch nur zum Testen sein, das mit dem Spielfeld würde ich später implementieren.
Habe viel im Internet gesucht und da wurde es halt genauso gemacht und ich versteh einfach nicht, wo der Fehler ist.
Das komische ist auch, dass wenn ich die 4.-letzte Zeile mit dem "g.fillRect" wieder mit reinnehme, das Rechteck gezeichnet wird.
Was ich auch nicht so ganz verstehe ist, wie das mit dem "Graphics g" funktioniert. Ich nehme mal an, das ist ein Objekt, das JPanel automatisch initialisiert!?
Habe allerdings in einigen (wenigen) Beispielen gesehen, dass Graphics g nochmal selber erstellt wurde.
Achso und das BufferedImage müsste doch auch fertig geladen sein, er gibt nämlich aus, wie breit bzw hoch das ist.