Eigenes Icon
-
Schade, dass du die Krise bekommst.
setImageIcon() ist eine Methode von Frame. getImage() ist eine Methode von ImageIcon und getClass sollte getClass() heißen. Wenn du das umänderst, soollte es funktionieren.
-
OK LeGaN.
Jetz hab ichs so:
URL imageURL = getClass().[u]getRessource[/u]("icon.ico"); ImageIcon icon = new ImageIcon(imageURL)[u];[/u] this.setIconImage(icon);
Nur hab ich immer noch 2 Fehler bei den beiden unterstrichenen Teilen.
The method getRessource(String) is undefined for the type Class<capture#1-of ? extends Text21337_v0_5>
// Text21337_v0_5 = Klassenname
Syntax error on token ";", { expected after this tokenWas passt da wieder nicht?
-
Hallo Woolve,
nimm es uns nicht böse, dass wir so stark auf der JavaDoc rumhampeln. Der Grund hierfür ist der, dass der Umgang mit der Dokumentation essentiel ist. Wenn Du Dich erst einmal dammit auseinander gesetzt hast, bist Du in der Lage sehr effektiv zu programmieren und das zu finden, was Du suchst.
Du bist natürlich wilkommen, weiter fragen zu stellen. Dazu ist das Forum ja da
Tut mir leid für den Fehler. Die getClass() ist eine Methode, die Du auf jedem beliebiegen Objekt aufrufen kannst. Zu jeder Klasse, wird genau eine Instanz (ein Objekt) gehalten, welches für Alle Objekte dieser (gegebenen) Klasse steht. Wozu das gebraucht wird? Das ist ein anderes Thema.
ImageIcon ist eine Ableitung bzw Spezialisierung von Icon. Das heißt, überall wo nach Icon gefragt wird, kannst Du auch ImageIcon einsetzen. Das nennt sich Polymorphie.
In der JavaDoc merkst Du das in der "spezielen" Klasse (hier ImageIcon), an dem kleinen Baum oben der in "Ascii-Art" gezeichnet wurde bzw an "All Implemented Interfaces" wenn es sich um Interfaces handelt. In der Benutzung ,im Kontext der Polymorphie, ist das egal ob Klasse oder Interface.
In der "generellen" Klasse (hier Icon) findest Du alle abgeleiteten/implementierenden Klassen in der Rubrik: "All Known Implementing Classes"Mein Beispielcode (bis auf den Fehler) geht davon aus, dass Er in einer Ableitung von JFrame geschrieben wurde, dh
class MyFrame extends JFrame { public MyFrame() { super(); //hier zb kommt der Beispielcode } // weiterer Code }
In diesem Fall wird getClass() und setImageIcon() auf MyFrame aufgerufen.
Sofern Du allerdins nicht ableitest, dann sieht es eher wie folgt aus://... JFrame f = new JFrame("MyFrame"); URL imageURL = f.getClass().getRessource("foo.ico"); ImageIcon icon = new ImageIcon(imageURL); f.setIconImage(icon); f.setVisible(true); //...
Das ganze natürlich vergleichbar mit AWT sofern Du es SWING vorziehst (Ich empfehle jedoch Swing zu nutzen, das ist aber ein anderes Thema).
Ich hoffe Ich konnte Dir helfen.
Sofern noch Fragen offen sind, nur zu, frage!Gruß
PS: Fehler vorbehalten, da aus dem Kopf geschrieben
-
Klasse linu(x)bie!
Endlich mal eine (mehr oder weniger) komplette Antwort ^^.
(nur Spaß, haha)Kann ich (in dem Fall deines Beispiels) statt "f.setIconImage(icon);" auch "this.setIconImage(icon);" schreiben?
Ich verwende (noch) kein Swing, wollte erst mal mit awt klarkommen.
Hilft es was, wenn ich meinen Code poste? Natürlich nich komplett, nur das, was hier von Bedeutung ist?
-
Frame.setIconImage() will aber ein Image, kein Icon.
JFrame f = new JFrame("MyFrame"); URL imageURL = f.getClass().getResource("foo.ico"); ImageIcon icon = new ImageIcon(imageURL); f.setIconImage(icon.getImage()); f.setVisible(true);
-
LeGaN schrieb:
Frame.setIconImage() will aber ein Image, kein Icon.
Hehe... habe es soeben auch gemerkt.
peinlich, peinlich
-
Kann ja mal passieren. Was mir auch grad aufgefallen ist, getRessource sollte mit einem s geschrieben werden, sonst gibts diese komische Fehlermeldung, die Woolve gepostet hat
-
Geht immer noch nich.
So ein Zeug macht einen echt Wahnsinnig.Frame frame = new Frame("Text21337_v0_5"); URL imageURL = frame.getClass().getResource("icon.ico"); ImageIcon icon = new ImageIcon(imageURL); frame.setIconImage (icon.getImage()); frame.setVisible(true);
Wo is da wieder der Fehler? *schwitz*
-
Was für eine Fehlermeldung gibt es denn?
-
Ööhmmm......
Frame frame = new Frame("Text21337_v0_5"); URL imageURL = frame.getClass().getResource("icon.ico"); ImageIcon icon = new ImageIcon(imageURL); [u]frame.setIconImage(icon.[/u]getImage()[u])[/u]; frame.setVisible(true);
Beim unterstrichenen:
Syntax error on token ")", { expected
Syntax error on token "setIconImage", Identifier expected after this token
Syntax error on token(s), misplaced construct(s)Was will der immer mit seiner geschweiften Klammer? Bevor die erste Funktion kommt, is auch nochmal Error(aber der gehört ja zum ersten).
Kennt ihr euch da aus???P.S.: Warum gibts in dem Forum hier beim BBCode keine Textfarben? Kennt sich ja keiner aus. So könnte man alles schöner markieren......
-
Jungs wartet mal...
Ich hab den Code-Teil jetz weiter nach unten verschoben, weil er war ganz am Anfang.
Jetz kommt kein Compiler-Fehler mehr, dafür aber ein Laufzeitfehler.
Das kommt in der Console:Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at Text21337_v0_5.<init>(Text21337_v0_5.java:69)
at Text21337_v0_5.main(Text21337_v0_5.java:93)Die betreffenden Zeilen hab ich unterstrichen!
[code] [67] Frame frame = new Frame("Text21337_v0_5"); [68] URL imageURL = frame.getClass().getResource("icon.ico"); [u][69] ImageIcon icon = new ImageIcon(imageURL);[/u] [70] frame.setIconImage (icon.getImage()); [71] frame.setVisible(true); // anderer Code [91] public static void main(String argv[]) [92] { [u][93] Text21337_v0_5 editor = new Text21337_v0_5();[/u] [94] } // public static void main()[/code]
-
Ich habe Deinen code 1:1 übernommen. Bei mir gibt es keine Fehler.
Hier noch einmal das Übernommene zum Vergleich:public static void main(String[] args) { Frame frame = new Frame("Text21337_v0_5"); URL imageURL = frame.getClass().getResource("/sun-java5.png"); ImageIcon icon = new ImageIcon(imageURL); frame.setIconImage(icon.getImage()); frame.setVisible(true); }
Das ist jetzt nicht der Fehler aber hier noch ein Tip, nicht das Du darüber stolperst:
Der Pfad bei getRessource() muss relativ zum Klassenlader angegeben werden. Wenn sich das Bild also im Defaultpackage befindet, dann ist der Pfad: "/meinbild.png".
-
So jetz geht alles, nach ein paar kleinen Änderungen.
Aber Icon bleibt trotzdem gleich (doofe Kaffeetasse).
Ich glaub es is hoffnungslos ^^
-
Bist du dir sicher, dass der Pfad zu deinem Icon richtig ist?
-
Woolve schrieb:
Aber Icon bleibt trotzdem gleich (doofe Kaffeetasse).
Ich habe es mit 16x16 png's probiert funktioniert!
-
Geil linu(x)bie!
That Shit works!
Mit PNG gehts! Hat warscheinlich nicht funktioniert, weil ich ICO benutzt hab.
Is ja ein Windows-Format. Soweit ich weiß. Egal es geht und ich bin glücklich.
Danke nochmal Jungs!