JPanel lädt nicht?!

Moin, ich mal wieder... ich werde heute noch irre...
Ich bastel mal wieder an meinem Programm und weiß nicht woran es liegt...
Ich habe verschiedene JFrames und JPanels, die durch einen Button (Zurück) "getauscht werden.
Bsp:
JFrame 1 und JFrame 2.
Wenn ich auf 1 bin kann ich auf 2 klicken und 1 wird ausgeblendet (klasse 2 aufrufen in der das frame ist, frame1.setVisible(false);)
und wenn ich auf 2 bin kann ich zurück auf 1. (klasse 1 aufrufen in der das frame ist, frame2.setVisible(false);)

Soweit so gut. Ansich hat das immer funktioniert und bis auf das eine Frame wo ich grade bin funktioniert es auch!
Ich klicke auf dem Button. Alles gut, frame und panel sind da. Ich gehe zurück und öffne es nochmal -> frame da, aber leer (also doch kein panel?!) klicke ich oben auf Vollbild, erscheint jedoch alles!!

Habt ihr eine idee woran das liegen kann? Wie gesagt bei allen anderen frames funktioniert es.

Und dann hänge ich gleich noch eine frage an: man kann ja in eclipse bilder speichern (im projekt so dass man darauf zugreifen kann)
Jetzt soll mein projekt eine eigene .exe werden. (ich weiß wie das geht...) aber da sind die bilder nicht bei... wie kann ich es schaffen die bilder bei der "installation" in dem Setup ordner zu speichern? Ich weiß ja nicht von wo aus ich darauf zugreifen muss... wisst ihr was ich meine?

So... ich hoffe ihr könnt mir helfen und wünsche schonmal einen schönen Sonntag.
Lg. Greg
 
Mal grundsätzlich: um zwischen zwei Panels hin- und herzuschalten bieten sich das CardLayout oder ein JTabbedPane an.

Zur Fehlersuche bietet es sich an, ein minimales Beispiel zu erstellen und ggf. zu posten. D. h. man schreibt ausführbaren Code, der gerade noch so viel enthält, dass das Problem auftritt. Meist findet man dabei schon den Fehler. Ansonsten einfach hier einstellen.
 
ok... es auf das minimalste zu reduzieren hat geholfen... der fehler war soo dumm ._. keine ahnung warum das passiert ist...
ich hab das JFrame vor der public static void definiert, das hat wohl zu einem fehler geführt... (in der public static void funktioniert es jetzt!)

Hast du auch eine Idee wie ich das mit den Bildern machen kann?

Also wie bereits gesagt: ich will für mein Programm eine art "Installations Setup" machen. Soweit so gut. Da in meinem Programm verschiedene Bilder vorkommen hatte ich den speicherort dafür bis jetzt immer fest definiert. ("D://Ordner//MeinBild.jpg)
Aber wenn der Benutzer das Programm installiert weiß ich ja nicht WO der startordner ist. Also dachte ich ich kann die Bilder in eclipse direkt speichern... auf die kann er aber scheinbar nicht in der .exe zugreifen. hast du oder habt ihr eine lösung dafür?
 
Hast du auch eine Idee wie ich das mit den Bildern machen kann?
Wenn es sich um Ressourcen handelt, werden diese im Jar mit abgelegt. Dann kann man via Class#getResource() bzw. getResourceAsStream() darauf zugreifen. Je nachdem, welche IDE bzw. welches Build-Tool Du verwendest, legt man dazu die Bilder in der Regel entweder im normalen Source-Path oder (wie bei maven) in einem entsprechenden Resource-Folder ab. Was ich nicht weiß: wie es sich verhält, wenn Du eine .exe daraus machst (habe ich noch nie gemacht, da das den Sinn von Java doch etwas untergräbt).

Hier noch ein Post dazu: https://www.java-forum.org/thema/pfadangabe.156951/page-2#post-1182271
 
Danke für die ansich ausführliche Antwort.
ansich erscheint es logisch... aber ich hab es noch nicht geschafft.
Ich habe die Bidler jetzt mit:
lupe.getClass().getResource("/images/lupe.jpg");
definiert. Aber ohne erfolg. Kannst du mir vielleicht eine genauere erklärung geben?

11797

hier sieht man (hoffentlich) nochmal wie die Bilder gespeichert wurden und mein versuch!
Danke nochmal und ich hoffe auf weitere Antworten!
 
Wenn Du getResource("/images/...") schreibst, muss die betreffende Ressource (das Bild) auch einem Paket images liegen. Leg mal unter Deinem Default Package ein Verzeichnis/Paket "images" an und schieb Deine Bilder da rein.
 
Dein images-Ordner ist an der falschen Stelle. Zieh den mal in das Default Package.

EDIT: sehe gerade, dass Du auch /images.write.jpg geschrieben hast, da sollte dann auch /images/write.jpg stehen.
 
Oje, jetzt sehe ich das erst... der Code ist auch falsch. Erstens liefert die getResource()-Methode nur eine URL, die Du irgendwo verwenden musst. Zweitens ist in Deinen static-Variablen ein falscher Pfad angegeben (nämlich keiner). Drittens ist es ungünstig, Fremdklassen zum Laden eigener Ressourcen zu verwenden, da für diese ein anderer ClassLoader zuständig sein könnte.

Mal konkret:
Java:
static ImageIcon menü = new ImageIcon(App1.class.getResource("/images/Menü.jpg"));
EDIT: den ganzen anderen Code bzgl. getResource() kannst Du entfernen. Und bitte halte Dich an die Benennungskonventionen von Java: Bezeichner für Variablen, Parameter, Methoden schreib man in lowerCamelCase, Typnamen für Klassen, Aufzählungen etc. in UpperCamelCase.
 
Danke für die Tipps. Inzwischen weiß ich das eigentlich. Aber da der Code teilweise schon fast 3 Jahre alt ist... (da habe ich ange fangen zu programmieren) und ich gestehe: ich bin zu faul alles zu korrigieren.

Zu deinem Lösungsvorschlag: in eclipse so funktioniert das. Aber leider nicht wenn ich es zu einer exe mache. Da öffnet sich die exe nicht mal mehr.
Ist das was ich vorhabe denn so schwer?!
 
Zu deinem Lösungsvorschlag: in eclipse so funktioniert das.
Funktioniert es auch außerhalb von Eclipse? D. h. mach mal ein Runnable Jar draus. Dieses solltest Du per Doppelklick aus dem Explorer heraus aufrufen können (in jedem Fall aber per java -jar /pfad/zur/datei.jar)

Wenn Du die Jar auch noch auf einem anderen Rechner ausführen kannst und dort alle Bilder/Ressourcen richtig geladen werden, hast Du - was Java betrifft - alles richtig gemacht. Du kannst das natürlich auch lokal testen, dann musst Du aber sicher sein, dass die Anwendung keine Ressourcen über absolute Pfadangaben aus dem Dateisystem lädt und die Jar vorher noch an einen Ort außerhalb Deines Projektordners kopieren.

Ist das was ich vorhabe denn so schwer?!
Was eine native Windows-EXE-Datei betrifft, kann ich Dir das nicht beantworten. Das sind Spielereien, mit denen ich mich nicht beschäftige, weil ich darin keinen Sinn sehe bzw. noch keinen Bedarf hatte. Was Java betrifft, ist das sehr einfach: getResource() bzw. getResourceAsStream() verwenden, Ressourcen im Jar an die entsprechende Stelle packen (macht das Build-System der IDE), fertig.
 
Es war nicht die Frage, ob Du die .exe ausführen kannst (dass das nicht funktioniert, hattest Du ja schon geschrieben), sondern ob Du ein "Runnable Jar" außerhalb von Eclipse ausführen kannst. Erzeug in Eclipse mal ein solches Jar, schieb dieses an einen anderen Ort (anderes Verzeichnis, besser andere Platte, noch besser anderer Rechner) und schau, ob sich das dort ausführen lässt und die Bilder korrekt geladen werden.
 
Achso... sry, das hab ich wohl falsch verstanden, bzw. war schon ein schritt weiter, da die .exe ja aus der .jar gemacht wird :D
Geht aber auch nicht-> wenn ich sie ausführe kommt ein kleines Popup:

"A Java Exception has occured!"
 
Gut. Wenn Du die Jar nicht mit Doppelklick startest sondern in der Eingabeaufforderung per "java -jar /pfad/zur/datei.jar", dann solltest Du auch den Stacktrace sehen und so mehr über die Exception erfahren.
 
also ich hab den image ordner jetzt UNTER dem package ordner gehabt... (wei du sagtest) aber in der .jar ist der nicht zu finden...
 
Mhh... ich bin ja noch schüler. Ich werde morgen mal meinen lehrer fragen. Obwohl images jetzt ein src.folder ist taucht er nicht in der jar auf. Ich muss sagen so langsam geht mir dieses (anfangs) al klein vermutete Problem auf die nerven -.-
Aber dir vielen dank für die Hilfe! und wenn du dich da nicht mal so mit auskennst doppelt dank das du es versucht hast!!
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben