Fehler beim erstellen eines Images.

FeliXXL

Mitglied
Hallo,

Ich hab ein winziges Problem beim erstellen eines imageicons, welches ich dann später anzeigen lassen will. Komme aber absolut nicht darauf, wo der Fehler liegen könnte.
Vielleicht könnt ihr mir ja ein wenig helfen...

Java:
import java.awt.Image;
import java.awt.Image.*;
import javax.swing.ImageIcon;

public class test{

	public static void main(String[] args) {
		int w = 100;
        int h = 100;
        int pix[] = new int[w * h];
        int index = 0;
        for (int y = 0; y < h; y++) {
            int red = (y * 255) / (h - 1);
            for (int x = 0; x < w; x++) {
                int blue = (x * 255) / (w - 1);
                pix[index++] = (255 << 24) | (red << 16) | blue;
            }
        }
        Image img = createImage(new MemoryImageSource(w, h, pix, 0, w));
        ImageIcon bild = new ImageIcon(img);
	}
}

Danke schon mal im voraus.
 
Zuletzt bearbeitet:
Ich nutze Eclipse.
Eclipse meint -

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
MemoryImageSource cannot be resolved to a type

at test.main(test.java:19)


- meint aber auch, dass ich "import java.awt.image.MemoryImageSource;" importieren sollte, was eigentlich schon mit "import java.awt.Image.*;" dabei sein müsste.
Wenn ich das dann zusätzlich importiere, gibt er -

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method createImage(MemoryImageSource) is undefined for the type test

at test.main(test.java:21)


- aus und meint ich sollte

"private static Image createImage(MemoryImageSource
memoryImageSource) {
// TODO Auto-generated method stub
return null;
}"

- zufügen. Wenn ich das dann AUCH noch mache, gibt er einfach -

Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at test.main(test.java:22)


- aus... (Zeilen im ersten post sind 1:1 - nach dem adden von "import java.awt.image.MemoryImageSource;" verschiebt sich alles um 1e Zeile.

Neuer Quelltext sieht dann so aus:

Java:
import java.awt.Image;
import java.awt.Image.*;
import java.awt.image.MemoryImageSource;

import javax.swing.ImageIcon;

public class test{

	public static void main(String[] args) {
		int w = 100;
        int h = 100;
        int pix[] = new int[w * h];
        int index = 0;
        for (int y = 0; y < h; y++) {
            int red = (y * 255) / (h - 1);
            for (int x = 0; x < w; x++) {
                int blue = (x * 255) / (w - 1);
                pix[index++] = (255 << 24) | (red << 16) | blue;
            }
        }
        Image img = createImage(new MemoryImageSource(w, h, pix, 0, w));
        ImageIcon bild = new ImageIcon(img);
	}

	private static Image createImage(MemoryImageSource memoryImageSource) {
		// TODO Auto-generated method stub
		return null;
	}
}

Ich hoffe das ist genau genug.
Mfg
 
Zuletzt bearbeitet:
Achtung, Groß-/Kleinschreibung ist in Java relevant! wenn du java.awt.Image.* importierst, wird java.awt.image.MemoryImageSource nicht importiert!
Und wenn du die Methode createImage überschreiben sollst, dann sollst du sie wahrscheinlich auch mit Inhalt füllen. Die letzte Exception tritt wahrscheinlich deswegen auf, weil die von dir überschriebene Methode 'null' zurück gibt.
 
Ist ein guter Ansatz. Ich weiß dennoch nicht, was ich zurückgeben soll. Ich will doch letztendlich nur eine Grafik anzeigen lassen. Die Grafik habe ich letztendlich ja hinzureichend definiert, dann als imageicon anzeigen lassen (weggekürzt). Aber an der Stelle verstehe ich den Fehler immer noch nicht.
Gegen welche Regel habe ich verstoßen, was habe ich falsch gemacht?
Ich weiß noch nicht was mir "System.out.println("Hallo");" bringen soll.^^

Mfg
 
Hi.

createImage ist eine Methode von java.awt.Toolkit.

Das aktuelle Toolkit kannst du z.B. von einem Window Objekt oder Frame bekommen.
Java:
Image img = new Frame().getToolkit().createImage(...);
Gruß
 
Zurück