hallo liebe Community ich habe wieder mal ein kleines Problem bei meinen Java Versuchen, heute habe ich einen ImageViewer selbst erstellt, welcher erfolgreich eine ppm datei zeichnet. Jedoch bekomme ich beim ausführen einige IllegalArgumentExceptions was mir nicht so gefällt. Kann mir jemand helfen wie ich das handeln kann:
Java:
import java.awt.Color;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.StreamTokenizer;
import java.util.ArrayList;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
* @author Sven Amend
*/
public class PPMlader extends JPanel{
ArrayList<Integer> RGBArrayList = new ArrayList<Integer>();
public void ppmDateiEinlesen(String filename) {
StreamTokenizer sTokenizer = null;
try {
sTokenizer = new StreamTokenizer(new FileReader(filename));
while (sTokenizer.nextToken() != StreamTokenizer.TT_EOF ) {
if (sTokenizer.ttype == StreamTokenizer.TT_NUMBER ){
RGBArrayList.add((int) sTokenizer.nval);
}//end if
}//end while
//Da die ersten fünf Zahlen in der ppm datei nix mit den RGBS zu tun ha
//werden diese aus der ArrayList gelöscht
for( int i=0; i<= 4;i++){
RGBArrayList.remove(0);
}//end for
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}//end catch
catch (IOException ex) {
ex.printStackTrace();
}//end catch
}//end ppmdateiEinlesen
public PPMlader() {
fensterErzeugen();
}//end Konstruktor
public void fensterErzeugen() {
JFrame frame = new JFrame("ImageViewer by Sven Amend");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setAlwaysOnTop(true);
frame.setLocationByPlatform(true);
frame.setSize(200, 297);
frame.getContentPane().add(this);
frame.setVisible(true);
}//end fensterErzeugen
@Override
protected void paintComponent(Graphics g) throws IllegalArgumentException{
super.paintComponent(g);
ppmDateiEinlesen("mystery-load.ppm");
int x = 0;
int y = 0;
for (int i = 0; i < RGBArrayList.size()-1; i = i + 3) {
if (x == 200) {
x = 0;
y++;
}//end if
int rotWert = RGBArrayList.get(i);
int gruenWert = RGBArrayList.get(i + 1);
int blauWert = RGBArrayList.get(i + 2);
g.setColor(new Color(rotWert, gruenWert, blauWert));
g.fillRect(x, y, 1, 1);
x++;
repaint();
}//end for
}//end paintComponent
public static void main(String[] args) {
new PPMlader();
}//end main
}//end class