Einfache jpg-Bilder anzeigen

Status
Nicht offen für weitere Antworten.

babuschka

Top Contributor
Hallo Java-Freunde,
ich bin gerade dabei mir eine Art Schiebepuzzle (3x3) zu programmieren und will zum ersten Mal mit Swing arbeiten. Ich bin nun schon soweit, dass mein Logikteil läuft, aber die grafische Umsetzung noch nicht lauffähig ist. Folgendes Problem. Derzeit habe ich es so umgesetzt, dass ich jedes einzelne Feld durch eine Nummer (getID()) per Schriftart darstellen lassen. Ich würde das ganze gerne einfach mit einem Bild realisieren, komme hier aber ums verrecken nicht weiter.

Code:
        ...
	private static final int ROWS = 3;
        private static final int COLS = 3;
        private static final int CELL_SIZE = 50;
        private Font font;
        
        public GraphicsPanel() {
            font = new Font("Verdana", Font.BOLD, 20);
            this.setPreferredSize(new Dimension(CELL_SIZE * COLS, CELL_SIZE*ROWS));
            this.addMouseListener(this);
        }
        public void paintComponent(Graphics g) {
            super.paintComponent(g);

            // Ab hier will ich praktisch nicht mehr über Schrift arbeiten, sondern z.B ein festes Bild
            // der Größe 32x32 verwenden. Den Namen meines Feldes bekomm ich über getID(),
            // z.B. für den Wert 1, soll er das Bild "1.jpg" nehmen. Für den Wert 2, soll der Bild "2.jpg" nehmen,
            // usw.
            for (int r=0; r<ROWS; r++) {
                for (int c=0; c<COLS; c++) {
                    int x = c * CELL_SIZE;
                    int y = r * CELL_SIZE;
                    String text = puzzle.getID(r, c);
                    if (text != null) {
                        g.setColor(Color.gray);
                        g.fillRect(x+2, y+2, CELL_SIZE-4, CELL_SIZE-4);
                        g.setColor(Color.black);
                        g.setFont(font);
                        g.drawString(text, x+20, y+(3*CELL_SIZE)/4);
...

Ich hoffe ihr könnt mir weiterhelfen!
 

babuschka

Top Contributor
Okay, wenn ich mein Bild nun mit

Code:
BufferedImage image = ImageIO.read(new File("1.jpg"));

einlesen will, bekomm ich die Fehlermeldung "Unhandled exeption type IOExecption".

Hast Du viellecht ein Beispiel da, an dem ich mich orientieren kann? Wäre super nett!
 

L-ectron-X

Gesperrter Benutzer
Das ist eine Aufforderung vom Compiler einer kritische Anweisung abzusichern.
Du musst die Anweisung also in einen try-catch-Block packen.
Code:
BufferedImage image = null;
try {
   image = ImageIO.read(new File("1.jpg"));
}
catch(IOException ex) {
   ex.printStackTrace();
}
 

babuschka

Top Contributor
Vielen Dank. Ich habe nun meine Bilder eingelesen...

Code:
    BufferedImage image1 = null;
    BufferedImage image2 = null;
    BufferedImage image3 = null;
    BufferedImage image4 = null;
    BufferedImage image5 = null;
    BufferedImage image6 = null;
    BufferedImage image7 = null;
    BufferedImage image8 = null;
    BufferedImage image0 = null;

    {
    
    try {
       image1 = ImageIO.read(new File("1.jpg"));
       image2 = ImageIO.read(new File("2.jpg"));
       image3 = ImageIO.read(new File("3.jpg"));
       image4 = ImageIO.read(new File("4.jpg"));
       image5 = ImageIO.read(new File("5.jpg"));
       image6 = ImageIO.read(new File("6.jpg"));
       image7 = ImageIO.read(new File("7.jpg"));
       image8 = ImageIO.read(new File("8.jpg"));
       image0 = ImageIO.read(new File("0.jpg"));
    }
    catch(IOException ex) {
       ex.printStackTrace(); } }

und meinen obigen Code umgeschrieben:


Code:
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            
            for (int r=0; r<ROWS; r++) {
                for (int c=0; c<COLS; c++) {
                    int x = c * CELL_SIZE;
                    int y = r * CELL_SIZE;
                    String id = puzzle.getID(r, c); //getID() Liefert einen String ("1", "2"), etc für das jeweilige Feld.
                    System.out.println(id); // Testausgabe (läuft von 1,2...,8, 0)
                
                    	if (id == "1") g.drawImage(image1, x, y, this);
                    	else if (id == "2") g.drawImage(image2, x, y, this);
                    	else if (id == "3") g.drawImage(image3, x, y, this);
                    	else if (id == "4") g.drawImage(image4, x, y, this);
                    	else if (id == "5") g.drawImage(image5, x, y, this);
                    	else if (id == "6") g.drawImage(image6, x, y, this);
                    	else if (id == "7") g.drawImage(image7, x, y, this);
                    	else if (id == "8") g.drawImage(image8, x, y, this);
                    	else if (id == "0") g.drawImage(image0, x, y, this);
                     }
                }

Leider wird hier nur das letzte Bild, also "0.jpg" angezeigt. Die anderen Bilder werden nicht angezeigt. Was mache ich falsch? Ich stehe so kurz davor! Habt alle vielen herzlichen Dank!
 

L-ectron-X

Gesperrter Benutzer
String-Vergleich!

Code:
if (id.equals("1")) g.drawImage(image1, x, y, this);
 

babuschka

Top Contributor
Oh man! Natürlich! Vielen herzlichen Dank! Ich muss mir echt abgewöhnen so spät noch vor der Kiste zu hocken!

VIELEN VIELEN DANK!
 

Zed

Bekanntes Mitglied
Noch ein Vorschlag

Code:
Map<Integer,BufferedImage> imgMap= new HashMap<Integer,BufferedImage>();

for(int i=0; i <= 8; i++ ){
BufferedImage image = ImageIO.read(new File( i + ".jpg" )); 
imgMap.put(i,image);

}


public void paintComponent(Graphics g) {
            super.paintComponent(g);
           
            for (int r=0; r<ROWS; r++) {
                for (int c=0; c<COLS; c++) {
                    int x = c * CELL_SIZE;
                    int y = r * CELL_SIZE;
                    String id = puzzle.getID(r, c); //getID() Liefert einen String ("1", "2"), etc für das jeweilige Feld.
                    System.out.println(id); // Testausgabe (läuft von 1,2...,8, 0)
                    g.drawImage( imgMap.get(r) , x , y, this);
                }


Die forSchleife ist noch nicht optimal besser wäre es durch den Inhalt der Dateien des Ordners zu Iterieren.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Jose05 einfache GUI mit schwarzem Feld AWT, Swing, JavaFX & SWT 12
X JavaFX Einfache FX Application, aber wie alte Features umgehen? AWT, Swing, JavaFX & SWT 10
B AWT einfache Stoppuhr -Verbesserungsvorschläge AWT, Swing, JavaFX & SWT 2
E Warum macht die einfache Animation einen kleinen Fehler? AWT, Swing, JavaFX & SWT 14
A Einfache Benutzeroberfläche wie realisieren? AWT, Swing, JavaFX & SWT 6
P Swing Einfache Eingabe in JTextfield wird nicht ausgegeben AWT, Swing, JavaFX & SWT 3
E EINFACHE Verständnisfrage zu repaint(), paintComponent(), usw. AWT, Swing, JavaFX & SWT 16
E einfache Frage:warum ist Hintergrund grau ? AWT, Swing, JavaFX & SWT 24
E einfache Frage zu paintComponent und Graphics AWT, Swing, JavaFX & SWT 7
L Einfache Layout Frage für Applet -> Was mache ich bloss falsch? AWT, Swing, JavaFX & SWT 2
V Swing Einfache Graphen-Lib? AWT, Swing, JavaFX & SWT 2
A Swing einfache fragen zu frame AWT, Swing, JavaFX & SWT 10
iLoveTheInternet Einfache Grafikausgabe AWT, Swing, JavaFX & SWT 2
E Swing Einfache Frage zu JMenu AWT, Swing, JavaFX & SWT 4
E Einfache Frage zu GridBagLayout AWT, Swing, JavaFX & SWT 30
E einfache Frage zu invokeLater() AWT, Swing, JavaFX & SWT 4
E Einfache Frage zu GridLayout AWT, Swing, JavaFX & SWT 35
H einfache Buttonanzeige AWT, Swing, JavaFX & SWT 2
M Einfache Möglichkeit einen Login Dialog zu bauen? AWT, Swing, JavaFX & SWT 1
M einfache Frage über SWT GUI-Programmierung AWT, Swing, JavaFX & SWT 3
S Einfache Thread-Frage AWT, Swing, JavaFX & SWT 3
G Einfache Text formatierung? Wie? AWT, Swing, JavaFX & SWT 4
O Suche einfache Möglichkeit zum Speichern AWT, Swing, JavaFX & SWT 21
G Einfache Frage Panel AWT, Swing, JavaFX & SWT 5
MiMa Fonts, Icons, Bilder in JavaFX Anwendung AWT, Swing, JavaFX & SWT 5
F Bilder zu ausführbarer Jar-Datei hinzufügen AWT, Swing, JavaFX & SWT 5
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
G JPanel mit JButtons und Bilder AWT, Swing, JavaFX & SWT 5
Linjutsu Den Inhalten aus einer ArrayList Bilder zuweisen (Kartenspiel) AWT, Swing, JavaFX & SWT 8
M Swing Bilder in Swing anzeigen AWT, Swing, JavaFX & SWT 9
S AffineTranformation Bilder verschwinden von Anzeige bei Pan, Zoom AWT, Swing, JavaFX & SWT 6
G Bilder in javafx Project AWT, Swing, JavaFX & SWT 11
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
N eclipse Java, bilder benutzten Funktioniert nicht AWT, Swing, JavaFX & SWT 6
Kirby.exe Bilder in GUI einfügen AWT, Swing, JavaFX & SWT 8
T Bilder bei einem JFrame einfügen AWT, Swing, JavaFX & SWT 4
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
L Bilder werden in exportierter Datei nicht geladen AWT, Swing, JavaFX & SWT 6
C Bilder so einbinden, dass sie sich ändern AWT, Swing, JavaFX & SWT 6
J Bilder aus dem SceneBuilder werden in der Jar nicht dargestellt AWT, Swing, JavaFX & SWT 4
TheWhiteShadow JavaFX Bilder werden ungewollt Skaliert AWT, Swing, JavaFX & SWT 1
B JavaFX Bilder in einem Gewissen bereich halten AWT, Swing, JavaFX & SWT 1
J Bilder proportional verkleiner AWT, Swing, JavaFX & SWT 12
E Bilder skalieren AWT, Swing, JavaFX & SWT 4
DaCrazyJavaExpert Swing Bilder überlagern AWT, Swing, JavaFX & SWT 19
A Bilder als Hintergrund AWT, Swing, JavaFX & SWT 2
@SupressWarnings() JavaFX Bilder in executable jar laden AWT, Swing, JavaFX & SWT 5
Sugan JavaFX Bilder drucken AWT, Swing, JavaFX & SWT 0
K JPanel Bilder bei Windows nicht darstellbar AWT, Swing, JavaFX & SWT 6
Sugan Java FX Verzeichnisüberwachung -> Bilder auf GUI anzeigen AWT, Swing, JavaFX & SWT 4
E AWT Bilder als "Array" abspeichern. AWT, Swing, JavaFX & SWT 4
MrSnake Bilder aus Unterordner einfügen AWT, Swing, JavaFX & SWT 2
I 2D-Grafik Bilder Eingefügt, button jetzt im Hintergrund AWT, Swing, JavaFX & SWT 2
C SWT Treeview mit Bilder im Label verändert Expanded Icon AWT, Swing, JavaFX & SWT 1
M Swing JTextPane, Bilder und Text-flow AWT, Swing, JavaFX & SWT 2
A Mit dem Scene Builder eine Collage erstellen (Bilder beziehen aus Flickr) AWT, Swing, JavaFX & SWT 1
thet1983 JTable Bilder AWT, Swing, JavaFX & SWT 6
GenerationLost Bilder an bestimmten Platz einfügen/Objekte visualisieren AWT, Swing, JavaFX & SWT 1
F Bilder in jFrame einfügen AWT, Swing, JavaFX & SWT 3
J Bilder als Variable an einem Objekt speichern AWT, Swing, JavaFX & SWT 3
I Swing Bilder werden nach Export nicht angezeigt AWT, Swing, JavaFX & SWT 1
D 2D-Grafik Bilder anzeigen AWT, Swing, JavaFX & SWT 4
J Bilder auf JPanel (im JScrollPane) nacheinander laden AWT, Swing, JavaFX & SWT 0
vodkaz JFrame,Bilder und Zeitverzögerung AWT, Swing, JavaFX & SWT 2
A Swing Bilder werden nicht angezeigt AWT, Swing, JavaFX & SWT 3
I SWT Bilder, bzw. ein einzelnes Bild AWT, Swing, JavaFX & SWT 6
M Bilder zeichnen, NullPointer Exception AWT, Swing, JavaFX & SWT 3
Xbody 2D-Grafik JavaFX Bilder transformieren AWT, Swing, JavaFX & SWT 2
C 2D-Grafik Steganographie - Verschlüsselung von Dateien in Bildern - Bilder zeigen schwarze Rechtecke AWT, Swing, JavaFX & SWT 13
P Durch Bilder Scrollen AWT, Swing, JavaFX & SWT 2
F Bilder werden nicht in's Array geladen AWT, Swing, JavaFX & SWT 4
K Bilder übereinanderlegen AWT, Swing, JavaFX & SWT 11
windl Querstreifen beim Bilder malen und anpassen an neue CPU AWT, Swing, JavaFX & SWT 12
V Fertige Komponente zum Anzeigen mehrerer Bilder AWT, Swing, JavaFX & SWT 5
Karuka 2D-Grafik Bilder in GridLayout einfügen AWT, Swing, JavaFX & SWT 7
J Bilder in ausführbare jar einbinden AWT, Swing, JavaFX & SWT 7
J Swing Bilder anzeigen in Gridlayout AWT, Swing, JavaFX & SWT 11
H 2D-Grafik Bilder laden ist nicht zuverlässig AWT, Swing, JavaFX & SWT 3
F Bilder ineinander kopieren AWT, Swing, JavaFX & SWT 3
P Bilder verkleinern AWT, Swing, JavaFX & SWT 2
C SWT Mehrere Bilder in GUI laden AWT, Swing, JavaFX & SWT 5
Furtano AWT Skalierung mehrerer Bilder / Histogramme im Fenster AWT, Swing, JavaFX & SWT 4
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
T 2D-Grafik Statisches Hintergrundbild, dynamische Bilder drüber AWT, Swing, JavaFX & SWT 2
C Zwei Bilder übereinander legen AWT, Swing, JavaFX & SWT 1
L [SWT] Daten und Bilder drucken AWT, Swing, JavaFX & SWT 2
S Flickr Bilder in Gui Oberfläche AWT, Swing, JavaFX & SWT 21
L Bilder im JPanel als Hintergrund - Swing AWT, Swing, JavaFX & SWT 2
K Bilder nacheinander einfügen AWT, Swing, JavaFX & SWT 3
H Bilder auf Buttons per Klick tauschen ( Puzzle ) AWT, Swing, JavaFX & SWT 8
H Bilder in Array zufällig anordnen AWT, Swing, JavaFX & SWT 4
P 2D-Grafik Viele Bilder zu einem Video AWT, Swing, JavaFX & SWT 3
J Vergleicher zweier Bilder AWT, Swing, JavaFX & SWT 2
C zwei Bilder nacheinander anzeigen AWT, Swing, JavaFX & SWT 2
L Swing Bilder über andere Bilder laden AWT, Swing, JavaFX & SWT 3
J Bilder überlappen AWT, Swing, JavaFX & SWT 18
P Bilder werden nach Änderung nicht angezeigt AWT, Swing, JavaFX & SWT 15
3 2D-Grafik Rechtecke auf Bilder legen und auslesen AWT, Swing, JavaFX & SWT 4
M Mehrere Bilder auf einmal anzeigen AWT, Swing, JavaFX & SWT 9
P Swing html mit bilder drin AWT, Swing, JavaFX & SWT 12

Ähnliche Java Themen

Neue Themen


Oben