Java weigert sich Bilddatei zu verarbeitet -.-

Status
Nicht offen für weitere Antworten.
S

SenioreFamicom

Gast
Hallöchen, ich sitz nun schon Stunden an dem Problem und langsam platzt meine Geduld.
Ziel ist es, eine Bilddatei als File-Objekt zu laden. Das Ergebnis wird weitergereicht an die Klasse TilesetPanel(File f), diese wiederrum übergibt die Datei als ImageIO.read(f)-Produkt an die Klasse TileMap(Image map), deren Konstrukter die Klasse Tile(Image img) auffruft und "map.getSubimage(...).getScaledInstance(...)" weiterreicht. Dummerweise zeigt mein Programm (siehe zweite Codebox -> Zeile 29) als Fehlermeldung "Can't read input file!" an.
Ich hoffe, ihr könnt mir helfen :(

Der Code:

Code:
public class TilesetPanel extends JPanel {
    private JGrid           grid;
    private TileMap         tileMap = null;
    
    public TilesetPanel(File f) throws IOException {
        tileMap = new TileMap(ImageIO.read(f));
        grid    = new JGrid(tileMap.getWidth(), tileMap.getHeight());
        
        this.setPreferredSize(new Dimension(tileMap.getWidth()*16*2, tileMap.getHeight()*16*2));
        this.setVisible(true); 
        //this.addMouseListener(this);
    }
    public Image getTileImageAt(int x, int y) {
        return tileMap.tile[x][y].img;
    }
    public Tile getTileAt(int x, int y) {
        return this.tileMap.tile[x][y];
    }
    public TileMap getTileMap() {
        return this.tileMap;
    }
    public int getTileAtX(int x) {
        return Math.round(x/(16*2));
    }
    public int getTileAtY(int y) {
        return Math.round(y/(16*2));
    }
    public boolean allowDisable(int index) {
        //for (int row = 0; row < parent.getJList().getModel().getSize(); row++) {
          //  int [] seq = parent.getSequenceData(parent.deleteSpace((String) parent.getJList().getModel().getElementAt(row)));
            //for (int i = 0; i < seq.length; i++) {
              //  if (seq[i] == index) {
                //    return false;
              //  }
            //}  
        //}
        return true;
    }
    private void openPopupMenu(MouseEvent event) {
        if (event.isPopupTrigger()) {
            JPopupMenu          tilemapPopup    = new JPopupMenu();
            JMenuItem           mItem           = new JMenuItem("Bearbeiten");
            JCheckBoxMenuItem   checkBoxItem    = new JCheckBoxMenuItem("Enable", true);
            //mItem.addActionListener(this);
            tilemapPopup.add(mItem);
            tilemapPopup.addSeparator();
            tilemapPopup.add(checkBoxItem);
            tilemapPopup.show(event.getComponent(), event.getX(), event.getY());
        }
    }
    public void mousePressed(MouseEvent event) {
        if (event.getButton() == MouseEvent.BUTTON1) {
            if (allowDisable(tileMap.tile[getTileAtX(event.getX())][getTileAtY(event.getY())].getIndex())) {
                if (tileMap.tile[getTileAtX(event.getX())][getTileAtY(event.getY())].getEnabled() == true) {
                    tileMap.tile[getTileAtX(event.getX())][getTileAtY(event.getY())].setEnabled(false);
                } else {
                    tileMap.tile[getTileAtX(event.getX())][getTileAtY(event.getY())].setEnabled(true);
                }
            } else {
                //new JErrorMessage(parent);
            }
        }
    }
    public void mouseReleased(MouseEvent event) {
        openPopupMenu(event);
    }
    public void mouseClicked(MouseEvent event) {}
    public void mouseEntered(MouseEvent event) {}
    public void mouseExited(MouseEvent event) {}
    public void actionPerformed(ActionEvent event) {}
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        if (tileMap != null) {
            tileMap.draw(g);
        }
        grid.draw(g);
        repaint();
    }
}

Code:
public class TileMap {
    private int             cnt     = 0;
    private int             height;
    private int             width;
    private BufferedImage   map;
    public  Tile [][]       tile;
    
    public TileMap(Image map) {
        System.out.println(map.getClass());
        this.map = (BufferedImage) map;
        System.out.println(map.getClass());
        updateSet();
    }
    
    public void updateSet() {
        this.tile       = null;                                 
        this.width      = this.map.getWidth () / 16;            
        this.height     = this.map.getHeight() / 16;            
        tile = new Tile[this.width+1][this.height+1];           
        for (int y = 0; y < this.height; y++) {
            for (int x = 0; x < this.width; x++) {
                try {
                    System.out.println("..." + map.getSubimage(x*16, y*16, 16, 16).getClass());
                    System.out.println("..." + map.getSubimage(x*16, y*16, 16, 16).getScaledInstance(16*2, 16*2, 0).getClass());
                    
                    tile[x][y] = new Tile(map.getSubimage(x*16, y*16, 16, 16).getScaledInstance(16*2, 16*2, 0), x*16*2, y*16*2, cnt);
                    
                } catch (IOException exc) {
                    System.out.println(exc.getMessage());
                }
                cnt++;
            }
        }
    }
    
    public int getWidth() {
        return this.width;
    }
    public int getHeight() {
        return this.height;
    }
    
    public void draw(Graphics g) {
        if ((height != 0 || width != 0) && tile != null) {
            for (int y = 0; y < this.height; y++) {
                for (int x = 0; x < this.width; x++) {
                    tile[x][y].draw(g);
                }
            }
        }
    }
}

class DisableIcon implements Constants {
private int x, y;
private Image img;
public DisableIcon(int x, int y) throws IOException {
this.x = x;
this.y = y;
img = ImageIO.read(new File(PATH + "/Icons/Stop(2).gif")).getScaledInstance(16 * 2, 16 * 2, 0);
}
public void draw(Graphics g) {
g.drawImage(img, x, y, null);
}
}
Code:
public class Tile {    
    private int             strXOffs;
    private boolean         enabled     = true;
    public  int             ID;
    public  int             x, y;
    public  Image           img         = null;
    private DisableIcon     disableIcon = null;
    private Font            font;
    
    public Tile(Image img, int x, int y, int ID) throws IOException {        
        this.x              = x;
        this.y              = y;
        this.ID             = ID;
        if (this.ID < 10) {
            this.strXOffs   = 27;
        } else if (this.ID >= 10 && this.ID < 100) {
            this.strXOffs   = 21;
        } else {
            this.strXOffs   = 17;
        }
        this.img            = img;
        this.font           = new Font("Arial", Font.PLAIN, 9);
        this.disableIcon    = new DisableIcon(x, y);
    }
    
    public int getIndex() {
        return this.ID;
    }
    public boolean getEnabled() {
        return this.enabled;
    }
    public void setEnabled(boolean enabled) {
        this.enabled = enabled;
    }
    
    public void draw(Graphics g) {
        if (img != null) {
            g.drawImage(img, x, y, null);
            g.setColor(Color.WHITE);
            g.setFont(font);
            g.drawString("" + ID, x + strXOffs, y + 30);
            if (this.enabled == false) {
                this.disableIcon.draw(g);
            }
        }
    }   
    
}
[/code]
 

Marco13

Top Contributor
Mach da mal nicht
System.out.println(exc.getMessage());
sondern
exc.printStackTrace();
und schau nach, ob das nicht aus dem "DisableIcon" kommt, wo er das Bild vielleicht nicht findet. Ansonsten wäre was compilier- und startbares natürlich hlfreich...
 
S

SenioreSuperFamicom

Gast
Tatsache. Das kommt aus der Ecke DisableIcon o.o

Code:
javax.imageio.IIOException: Can't read input file!
        at javax.imageio.ImageIO.read(ImageIO.java:1275)
        at SN32.Editor.Beans.Tabs.Tiles.DisableIcon.<init>(Tile.java:18)
        at SN32.Editor.Beans.Tabs.Tiles.Tile.<init>(Tile.java:47)
        at SN32.Editor.Beans.Tabs.Tiles.TileMap.updateSet(TileMap.java:33)
        at SN32.Editor.Beans.Tabs.Tiles.TileMap.<init>(TileMap.java:19)
        at SN32.Editor.Beans.Tabs.TilesetPanel.<init>(TilesetPanel.java:24)
        at SN32.Editor.Beans.Tabs.MapTab.actionPerformed(MapTab.java:87)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6041)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
        at java.awt.Component.processEvent(Component.java:5806)
        at java.awt.Container.processEvent(Container.java:2058)
        at java.awt.Component.dispatchEventImpl(Component.java:4413)
        at java.awt.Container.dispatchEventImpl(Container.java:2116)
        at java.awt.Component.dispatchEvent(Component.java:4243)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
        at java.awt.Container.dispatchEventImpl(Container.java:2102)
        at java.awt.Window.dispatchEventImpl(Window.java:2440)
        at java.awt.Component.dispatchEvent(Component.java:4243)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

Der Pfad war falsch. Daran hab ich gar nicht gedacht.
Somit ist das Problem gelöst :)

Dankeschön[/code]
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin Für Java-Spezialisten AWT, Swing, JavaFX & SWT 4
Juelin Java <-> Delphi AWT, Swing, JavaFX & SWT 3
H Exceptions seit java: 1.6.0_65 Umstellung AWT, Swing, JavaFX & SWT 3
H Exception: java.lang.ClassCastException AWT, Swing, JavaFX & SWT 2
M JavaFX java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found AWT, Swing, JavaFX & SWT 5
J Java GUI Dropdown-Menü anzeigen AWT, Swing, JavaFX & SWT 5
M Eigene Java Klasse für allgemeine Grafikelemente AWT, Swing, JavaFX & SWT 8
thor_norsk Java - Allgemeine - Frage AWT, Swing, JavaFX & SWT 14
W Kennt jemand Dear ImGui (und den Java-Wrapper dazu)? AWT, Swing, JavaFX & SWT 0
B Java Projekt mit JavaFX und jfoenix ausführbar machen AWT, Swing, JavaFX & SWT 46
D JAVA Schieberegler AWT, Swing, JavaFX & SWT 6
N JavaFX Einfacher Taschenrechner mit Scene Builder und Java FX AWT, Swing, JavaFX & SWT 0
Jose05 Aus einer normalen Java Klasse eine FXML-Klasse laden AWT, Swing, JavaFX & SWT 12
S Welches Java Layout sollte ich verwenden? AWT, Swing, JavaFX & SWT 3
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
P Fehlermeldung: Error: Could not find or load main class set Caused by: java.lang.ClassNotFoundException: set AWT, Swing, JavaFX & SWT 5
Encera Java FX im Eclipse-Marketplace nichtmehr auffindbar AWT, Swing, JavaFX & SWT 6
_user_q Versionscode aus build.gradle in Java-Klasse ausgeben lassen AWT, Swing, JavaFX & SWT 14
M Java Dateien kopieren mit Fortschrittsbalken AWT, Swing, JavaFX & SWT 13
M Frage zu Java Bundesligaverwaltung AWT, Swing, JavaFX & SWT 7
_user_q Gibt es eine Möglichkeit, in Java alle möglichen Zeichen automatisch tippen zu lassen? AWT, Swing, JavaFX & SWT 13
E 3D-Grafik Java Fatal error bei LWJGL AWT, Swing, JavaFX & SWT 2
Heldderschatten Java Events und Interfaces AWT, Swing, JavaFX & SWT 18
volcanos Scrollen: JScrollPane mit Graphics g und Java-Fonts extends Frame ? AWT, Swing, JavaFX & SWT 5
sserio Java Fx - Problem AWT, Swing, JavaFX & SWT 3
U Warum wird zweimal die Affinetransformation estellt (2Dgraphics, Java)? AWT, Swing, JavaFX & SWT 31
U was bewirkt die methode fill und unterschied zu anderen fill Methoden in 2dgraphics? (Java)? AWT, Swing, JavaFX & SWT 6
DonBronson Java Graphics bewegbar machen (Drag&Drop) AWT, Swing, JavaFX & SWT 3
Yonnig Lokale HTML-Datei in Java GUI rendern AWT, Swing, JavaFX & SWT 4
E Java-TexturePaint sehr langsam AWT, Swing, JavaFX & SWT 9
N Java MySQL Datenbank durchsuchen? AWT, Swing, JavaFX & SWT 7
maximstein JavaFX WebView - java.lang.NoSuchMethodError: 'boolean com.sun.prism.ResourceFactory.isDisposed()' AWT, Swing, JavaFX & SWT 4
Splayfer Custom Font in AttributedString Java AWT, Swing, JavaFX & SWT 4
imawake Java Paket-Tracking Programm 📦 AWT, Swing, JavaFX & SWT 7
izoards *.doc Seitenränder per Java setzen... AWT, Swing, JavaFX & SWT 14
T FXML Datei in Java Code einbinden: javafx.fxml.LoadException AWT, Swing, JavaFX & SWT 2
J Key-Listener in Java AWT, Swing, JavaFX & SWT 37
J Java Datei durch CMD mit Parameter ausführen AWT, Swing, JavaFX & SWT 1
N Java Mouse Listiner macht alles zusammen AWT, Swing, JavaFX & SWT 4
J Java FX NullPointerException, ObservableList wird in View nicht angezeigt.. AWT, Swing, JavaFX & SWT 34
T Exception in thread "main" java.lang.NoClassDefFoundError AWT, Swing, JavaFX & SWT 4
M Error occurred during initialization of boot layer java.lang.module.FindException: Module javafx.controls not found AWT, Swing, JavaFX & SWT 14
AmsananKING Java Menü-Problem AWT, Swing, JavaFX & SWT 1
T Swing DPI-Skalierung und Java 2D unter Java 11 (und Windows 10) AWT, Swing, JavaFX & SWT 2
J Spiel mit Java AWT, Swing, JavaFX & SWT 9
I AWT java.awt.FileDialog - "coffee cup"-Icon lässt sich nicht ersetzen AWT, Swing, JavaFX & SWT 14
O Ein Java-Programm mit Swing steuern AWT, Swing, JavaFX & SWT 1
izoards Java FX Window Event SHOWING AWT, Swing, JavaFX & SWT 17
N FXMLLoader.load java.lang.RuntimeException: Gradle AWT, Swing, JavaFX & SWT 2
T Java GUI - Würfel Programm AWT, Swing, JavaFX & SWT 6
JojoSand Java Programm wird nicht gestartet - keinen Fehlerhinweis AWT, Swing, JavaFX & SWT 9
dtr84 JavaFX/OpenJFX mittels Apache Ivy einbinden (Java 11) AWT, Swing, JavaFX & SWT 18
M Jogl und Java 3d AWT, Swing, JavaFX & SWT 0
S0PEX JavaFX Java 8 auf 15 migrieren OpenJFX mit Gradle eingebunden, jedoch nicht gefunden !? AWT, Swing, JavaFX & SWT 4
I Gui in bestehendes Java-Programm AWT, Swing, JavaFX & SWT 11
V Java-Zeichenfeld mit AWT AWT, Swing, JavaFX & SWT 3
N java Gui friert scheinbar zufällig ein AWT, Swing, JavaFX & SWT 5
T Anderen Java Code durch Code kompilieren und Fehler in Label ausgeben AWT, Swing, JavaFX & SWT 5
P Java Fx einrichten AWT, Swing, JavaFX & SWT 2
pkm Frage wegen java.lang.IllegalStateException bei DocumentListener AWT, Swing, JavaFX & SWT 4
S JavaFX Java Custom Node Grafik zurückgeben AWT, Swing, JavaFX & SWT 2
MiMa Java und JavaFX 13 läuft endlich AWT, Swing, JavaFX & SWT 4
N eclipse Java, bilder benutzten Funktioniert nicht AWT, Swing, JavaFX & SWT 6
Trèfle Ausklappbare Diagramme in Java AWT, Swing, JavaFX & SWT 1
R Java, GUI, Hintergrundbild, Image, AWT, Swing, JavaFX & SWT 4
K JAVA FX Constraints AWT, Swing, JavaFX & SWT 2
F Java FX und webcam AWT, Swing, JavaFX & SWT 1
T Wie kann man in java aufwendige grafiken programmieren AWT, Swing, JavaFX & SWT 1
M Swing Java Swing/AWT Combobox Bug AWT, Swing, JavaFX & SWT 3
S Java GUI durch variable Größe einer Map anpassen AWT, Swing, JavaFX & SWT 3
J Java SWT Tabelleninhalt formattieren AWT, Swing, JavaFX & SWT 10
Blender3D Falsche Werte mit Java Toolkit Screensize AWT, Swing, JavaFX & SWT 4
K Swing AWT-EventQueue-1 java.lang.NoClassDefFoundError bei setVisible(true) AWT, Swing, JavaFX & SWT 3
A Java Programm gestalten AWT, Swing, JavaFX & SWT 4
B [Problem] Java öffnet Word-Datein nicht AWT, Swing, JavaFX & SWT 14
S Swing Java Swing AWT, Swing, JavaFX & SWT 6
I Java Bildfarbe ändern wie bei Photoshop AWT, Swing, JavaFX & SWT 9
R JavaFX Java FXML Vererbung in Klassen AWT, Swing, JavaFX & SWT 9
T Java: Zwei abhängige JSlider machen nicht das, was sie sollen AWT, Swing, JavaFX & SWT 4
J Parallele Aktionen in Java FX richtig durchführen. AWT, Swing, JavaFX & SWT 5
Neumi5694 java.awt.Window nach javafx.stage.Window AWT, Swing, JavaFX & SWT 1
M JavaFX java.lang.IllegalStateException: Location is not set. AWT, Swing, JavaFX & SWT 9
L Java- CardLayout AWT, Swing, JavaFX & SWT 10
M Java zeichnet nicht pixelgenau AWT, Swing, JavaFX & SWT 40
B Swing Eclipse is running under 0, but this Java project has a 1.6 Java compliance level, so WindowBuilder AWT, Swing, JavaFX & SWT 2
L Java- UI zweites Fenster aus einer anderen Klasse öffnen durch ButtonClick AWT, Swing, JavaFX & SWT 4
S Java Gui AWT, Swing, JavaFX & SWT 5
R Sierpinski Dreieck mit Java FX AWT, Swing, JavaFX & SWT 4
Flynn java.lang.UnsupportedOperationException: Not supported yet AWT, Swing, JavaFX & SWT 7
D Zwei getrennte Java Klassen verbinden. Wie ? AWT, Swing, JavaFX & SWT 2
D SQL Statements mit Java Swing benutzen AWT, Swing, JavaFX & SWT 4
D DatePicker für Java Swing AWT, Swing, JavaFX & SWT 2
S AWT Java print dialog Problem AWT, Swing, JavaFX & SWT 0
N Aktualisierung des Fensters AWT Java ohne Ruckeln AWT, Swing, JavaFX & SWT 3
MiMa Java, Maven Projekte nach JavaFX? AWT, Swing, JavaFX & SWT 3
T Java Swing - kleines Rechteck unter dem cursor AWT, Swing, JavaFX & SWT 5
L java.lang.NullPointerException - Fehlermeldung AWT, Swing, JavaFX & SWT 2
D Swing Java JComboBox Example AWT, Swing, JavaFX & SWT 16
J AWT System Farben / java.awt.SystemColor funktioniert nicht AWT, Swing, JavaFX & SWT 4
MiMa Java Projekt nach JavaFX convertieren AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben