Relative Pfade zu Fenster-Icon in Main-Methode?

Status
Nicht offen für weitere Antworten.
F

Flow24

Gast
Hallo zusammen,

bisher habe ich in meinen Java-Anwendungen absolute Pfade (oh schande) zu den verwendeten Icons verwendet.
Nun möchte ich statt dessen relative Pfade verwenden, d.h. ich hole mir den aktuellen Pfad der Quellcode-Datei
und wandere dann von dort aus zu meinem Zielordner:

ImageIcon icon = new ImageIcon(getClass().getResource("../Bilder/Login.gif"));

Das funktioniert auch. In der Main-Methode meiner Login-Klasse möchte ich dem Login-Fenster ein
Icon in der Titelleiste verpassen:
Code:
public static void main(String[] args)
{
	Login log = new Login();
    
	log.setLocation(290, 250);
	log.setSize(350, 190);
	log.setVisible(true);
	log.setFocusableWindowState(true);
	log.setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);
		
	Toolkit tk2 = log.getToolkit();
	Image image2 = tk2.getImage(getClass().getResource("../Bilder/World.gif"));

	while ( !tk2.prepareImage( image2, -1, -1, log) ) 
	{
		try 
		{
			Thread.sleep( 100 );
		} 
		catch ( Exception exception ) 
		{
		}
	}

	log.setIconImage( image2 );
	System.out.println("Login-Fenster");

}
Eclipse zeigt mir im Code aber schon an der Stelle

Image image2 = tk2.getImage(getClass().getResource("../Bilder/World.gif"));

folgendes an:

"The method getClass() from the type Object is not static."

Wie kann ich hier relativ zu meinem Icon gelangen??

Und noch eine zweite Frage:

Das Icon World.gif ist ein animiertes Icon, die Weltkugel dreht sich. In der Titelleiste meiner
Java-Anwendung hingegen ist das Icon nicht animiert.
Wieso und wie kann man das Icon auch in einer Java-Anwendung in Bewegung bringen?

Grüße Florian Scheidler
 

Sky

Top Contributor
Du musst Dich schon auf eine Instanz beziehen; ich denke mal, in deinem Fall "log":

Code:
ImageIcon icon = new ImageIcon(log.getClass().getResource("../Bilder/Login.gif"));
 
F

Flow24

Gast
Die Fehlermeldung ist zwar weg und ich kann die Anwendung starten, aber das Icon wird
nicht in der Titelleiste angezeigt. Stattdessen ist dort das Standard-JavaIcon.

Woran kann das noch liegen?
Und wie sieht es mit animierten Icons aus?

Gruß Florian Scheidler
 

Sky

Top Contributor
na dann wird der Ausdruck log.getClass().get... == null sein, weil die Ressource an der angegebenen Stelle nicht gefunden wurde.

edit: kann auch sein, dass dein Bild noch nicht geladen war. Guck Dir entweder mal den Mediatracker an oder lad mit ImageIO#read
 
B

Beni

Gast
So wie du den Pfad angegeben hast, ist er relativ zum Package der Klasse. Wenn "log" in einem anderen Package liegt wie deine Main, dann zeigt der Pfad ins nirgendwo.

Ich würde das so machen:
Code:
URL url = MainKlasse.class.getClassLoader().getRessource( "../Bilder/Login.gif" );
Also, über den ClassLoader gehen (sicher kein Problem mit relativen Pfaden), und ".class" benutzen, damit benötigt man keine Instanz :wink:
 
F

Flow24

Gast
@Beni: Was soll denn in deinem Codeschnipsel die Mainklasse sein? Die Klasse in der sich die Main-Methode befindet?
Meine Klasse selbst heißt Login und in dieser Klasse befindet sich die Main-Methode, die ein Objekt von Login bildet, welches Log heißt.

Mit

Code:
URL url = Login.class.getClassLoader().getResource( "../Bilder/Login.gif" ); 
      		System.out.println("URL: " + url.toString());
      		Toolkit tk2 = log.getToolkit();
      		Image image2 = tk2.getImage(url);

      		while ( !tk2.prepareImage( image2, -1, -1, log) ) 
			{
				try 
			{
					Thread.sleep( 100 );
			} 
				catch ( Exception exception ) 
			{
			}
			}
 
			log.setIconImage( image2 );

bekomme ich eine NullPointerException geliefert und zwar an der Stelle

System.out.println("URL: " + url.toString());

Das bedeutet dass url = NULL ist.

Wieso funktioniert das nicht?
Und wie sieht es denn nun mit animierten GIFs aus?

Gruß und vielen Dank für Eure bisherige Hilfe!

Florian Scheidler
 
F

Flow24

Gast
Uups ich habe gerade festgestellt, dass meine erste Frage, ohne das ich es wußte, eng verbunden mit der
zweiten Frage ist. Java konnte das Icon nur deshalb nicht in der Titelleiste anzeigen, weil es animiert ist.
Hab es jetzt als Standbild gespeichert und siehe da, es geht.

Kann mir denn nun jemand sagen wie man animierte GIFs in Java darstellt bzw. einbindet?

Gruß Florian Scheidler
 
B

Beni

Gast
Flow24 hat gesagt.:
@Beni: Was soll denn in deinem Codeschnipsel die Mainklasse sein? Die Klasse in der sich die Main-Methode befindet?
Meine Klasse selbst heißt Login und in dieser Klasse befindet sich die Main-Methode, die ein Objekt von Login bildet, welches Log heißt.
Ja, in diesem Fall "Login".

Wenn du's via ClassLoader machst, beginnt die Suche im Wurzel-Verzeichnis der class-Dateien, vielleicht ist passt dein Pfad dann nicht mehr?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Datei über relative Pfade einlesen Java Basics - Anfänger-Themen 6
J relative pfade windows/unix Java Basics - Anfänger-Themen 12
Kiki01 Wie würde eine geeignete Schleife aussehen, die die relative Häufigkeit für jeden Charakter in einem Text bestimmt? Java Basics - Anfänger-Themen 3
eLogic JDBC: Relative Pfadangabe in JAR Java Basics - Anfänger-Themen 14
Piwi Relative Pfadangabe bei Bildern Java Basics - Anfänger-Themen 2
Das Brot Relative Pfadangaben innerhalb von .jar Archiven Java Basics - Anfänger-Themen 7
D relative Pfadangabe auf überverzeichnis Java Basics - Anfänger-Themen 3
S Relative Pfadangabe funzt nicht Java Basics - Anfänger-Themen 2
A relative Pfadangabe in jars Java Basics - Anfänger-Themen 2
B Relative/Absolute Pfadangabe. Wie unterscheiden? Java Basics - Anfänger-Themen 4
M relative Pfadangabe beim laden von properties Datei Java Basics - Anfänger-Themen 4
G relative Pfadangabe Java Basics - Anfänger-Themen 3
C Absolute Cursor Position oder doch relative? Java Basics - Anfänger-Themen 4
E relative häufigkeit berechnen funktioniert nicht Java Basics - Anfänger-Themen 7
V wieder mal "relative Pfadangabe" Java Basics - Anfänger-Themen 4
E Relative Pfadangaben Java Basics - Anfänger-Themen 5
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
L Breadth-First Search statt einem Pfad, alle Pfade herausfinden Java Basics - Anfänger-Themen 4
MiMa Formate für Dateien und Pfade? Java Basics - Anfänger-Themen 1
E Pfade eines Baums angeben ohne Rekursion Java Basics - Anfänger-Themen 20
I Alle Laufwerke und deres Pfade ausgeben Java Basics - Anfänger-Themen 6
O Löschen lange pfade...Fehler? Java Basics - Anfänger-Themen 1
O Absolute Pfade in mehrere Klassen verwenden Java Basics - Anfänger-Themen 3
L Manifest und absolute Pfade Java Basics - Anfänger-Themen 5
S Variable Pfade Java Basics - Anfänger-Themen 14
N Feste Hardcodierte Pfade im Quellcode Java Basics - Anfänger-Themen 6
M Pfade in Tree einbinden Java Basics - Anfänger-Themen 2
J Icons. und. Pfade Java Basics - Anfänger-Themen 3
N Java wird nicht ausgeführt obwohl nötige Pfade gesetzt sind Java Basics - Anfänger-Themen 5
G Servlets: Erwartete/Angelegte Pfade von Tomcat/Eclipse Java Basics - Anfänger-Themen 2
A Unterschiedliche Pfade je nach OS? Java Basics - Anfänger-Themen 4
L Dateien im Netzwerk bearbeiten (UNC-Pfade und gemappte Laufw Java Basics - Anfänger-Themen 5
A Reguläre Ausdrücke der Pfade unter Windows und Unix Java Basics - Anfänger-Themen 3
V filereader soll aus config.txt pfade lesen Java Basics - Anfänger-Themen 6
E Variable von 1. Fenster an 2. Fenster übergeben. Java Basics - Anfänger-Themen 7
javalux123 Keylistener auf andere Fenster Java Basics - Anfänger-Themen 3
T Java FXML selbes Fenster verschiedene Stellen im Programm Java Basics - Anfänger-Themen 5
B Scrollbares Fenster (JScrollPane) mit JPanel scrollt nicht Java Basics - Anfänger-Themen 3
J Überprüfen ob ein Fenster offen ist? Java Basics - Anfänger-Themen 8
T jOptionPane zum schließen von Fenster, wie "Ja" und "Nein" anstatt Yes und No Java Basics - Anfänger-Themen 2
JEP1 Java Dialog Fenster schließen Spiel Java Basics - Anfänger-Themen 0
H Eingabe tätigen bevor Graphics g Fenster öffnet Java Basics - Anfänger-Themen 5
celta_vigo Konsolen-Fenster ist weg Java Basics - Anfänger-Themen 5
Thomathy Interface Wie schließt man ein anderes JFrame Fenster? Java Basics - Anfänger-Themen 6
M PNG als Spieler im Fenster anzeigen Java Basics - Anfänger-Themen 4
S JOptionPane komplett leeres Fenster Java Basics - Anfänger-Themen 4
A Eclipse-Fenster starten statt Konsoleausgabe Java Basics - Anfänger-Themen 2
A Fenster bleibt weiß Java Basics - Anfänger-Themen 7
O Fenster programmieren Java Basics - Anfänger-Themen 2
M JavaFX: Fenster bleibt weiß Java Basics - Anfänger-Themen 3
A Fenster programmieren Java Basics - Anfänger-Themen 1
J JFrame Fenster öffnet sich nicht Java Basics - Anfänger-Themen 7
M aus Fenster anderes Fenster öffnen und wieder umgekehrt Java Basics - Anfänger-Themen 5
J Best Practice DOS Fenster mit Befehlszeile (Lösung) Java Basics - Anfänger-Themen 2
J Fenster wieder unsichtbar machen Java Basics - Anfänger-Themen 2
das_leon Gesamtes Programm in einem Fenster Java Basics - Anfänger-Themen 1
E Knopfdruck neues Fenster öffnen Java Basics - Anfänger-Themen 5
A Fenster mit Button aufrufen Java Basics - Anfänger-Themen 3
D Erste Schritte JPanel verschiebt Fenster via setVisible Java Basics - Anfänger-Themen 5
W Es wird erst gezeichnet, wenn ich das Fenster vergrößere? Java Basics - Anfänger-Themen 20
K Interface Fenster mit 3 ComboBoxen und 1 Button Java Basics - Anfänger-Themen 13
P Erste Schritte durch MenuBar verschiedene Fenster öffnen Java Basics - Anfänger-Themen 2
I Fenster A soll Fenster B schliessen Java Basics - Anfänger-Themen 5
D Java Fenster blockiert ? Java Basics - Anfänger-Themen 5
K Erste Schritte Neues Fenster mit Textinhalt öffnen Java Basics - Anfänger-Themen 6
M Code um per jButton ein neues Fenster zu öffnen Java Basics - Anfänger-Themen 3
A Popup-Fenster Java Basics - Anfänger-Themen 1
L Fenster auf Knopfdruck Java Basics - Anfänger-Themen 3
N Problem mit JOptionPane und Fenster-Fokus Java Basics - Anfänger-Themen 2
J ausgaben von der konsole in das fenster Java Basics - Anfänger-Themen 5
O Finally beim Fenster schliessen Java Basics - Anfänger-Themen 3
F Klassen Zugriff auf Fenster aus versch. Klassen Java Basics - Anfänger-Themen 5
P Eigenes Fenster erstellen Java Basics - Anfänger-Themen 5
M Input/Output Text auf Fenster zeichen Java Basics - Anfänger-Themen 2
T Zu viele Fenster - HILFE! Java Basics - Anfänger-Themen 5
J Extra Fenster (Frame) Java Basics - Anfänger-Themen 20
llabusch Fenster per Button verschieben Java Basics - Anfänger-Themen 5
llabusch Fenster um x Pixel verschieben Java Basics - Anfänger-Themen 4
P Window Builder Reiter im Fenster erstellen Java Basics - Anfänger-Themen 7
S Java Fenster Java Basics - Anfänger-Themen 2
D (zwei) Fenster mit unterschiedlicher Befüllung Java Basics - Anfänger-Themen 11
A JAVA Fenster in ein PDF Konvertieren Java Basics - Anfänger-Themen 1
A Erkennung eines Button im aktiven Fenster Java Basics - Anfänger-Themen 2
B Variable im Fenster anzeigen lassen? Java Basics - Anfänger-Themen 2
S Fenster ist zu groß Java Basics - Anfänger-Themen 8
O GUI: Eigene Fenster "Form"? Java Basics - Anfänger-Themen 13
X JFrame Fenster einzeln schließen Java Basics - Anfänger-Themen 2
E Fehlermeldung und Fenster wird nicht mehr angezeigt Java Basics - Anfänger-Themen 12
I Einlese Abfrage zweier Variablen in einem Fenster Java Basics - Anfänger-Themen 6
F Erste Schritte Aktuelles Fenster durch Event schließen Java Basics - Anfänger-Themen 3
N Java Programm im CMD Fenster öffnen, wie? Java Basics - Anfänger-Themen 17
S Erste Schritte Fenster wechsel im Applet Java Basics - Anfänger-Themen 7
tuttle64 Keine Umlaute im Dos Fenster Java Basics - Anfänger-Themen 12
J Button nimmt das komplette Fenster ein?! Java Basics - Anfänger-Themen 5
M Beim Klicken auf X neues Fenster Java Basics - Anfänger-Themen 4
Athena Schlichtes Fenster mit Windowskomponenten Java Basics - Anfänger-Themen 3
H KeyListener auf ganzes Fenster setzen Java Basics - Anfänger-Themen 14
S Neues Fenster auf Knopfdruck Java Basics - Anfänger-Themen 12
J Button drücken neues Fenster?! Java Basics - Anfänger-Themen 5
A Login Fenster Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben