Java Applet mit Popup

  • Hey!

    Will mein Programm jetzt endlich endlich fertig haben und geh mir schon selbst am Wecker, dass ich keine Lösung zu Folgendem finde:

    Ich habe ein JApplet, das einen Text "exportieren" soll. Exportieren heißt, ein neues Fenster soll aufgehen und dort dieser Text dargestellt werden. Hab alles mit Eclipse entwickelt und da geht das auch einwandfrei. Sobald mein Applet läuft, wird durch

    Code
    Frame f = new Frame();
        JDialog popup = new JDialog(f, true);

    ein neues Fenster gezeigt und Text ausgegeben, wie ich es haben will.

    Ich hab meine .jar Datei jetzt einfach mal auf den Server gestellt, das Programm läuft dort auch, auch alle JOptionPanes mit Errormessages werden angezeigt. Wenn ich dann aber exportieren will, tut sich gar nix...

    Wie kann ich einen JDialog auch in einem Browser starten? (habs mit FF und Opera probiert, FF sagt mir nicht, dass Popups gestartet werden wollen und er das unterbindet, so, wie ers sonst macht....)

    Weiß jemand Rat? :)

    Ihr glücklichen Augen, Was je ihr gesehen, Es sei wie es wolle, Es war doch so schön!


  • Ich habe ein JApplet, das einen Text "exportieren" soll. Exportieren heißt, ein neues Fenster soll aufgehen und dort dieser Text dargestellt werden. Hab alles mit Eclipse entwickelt und da geht das auch einwandfrei. Sobald mein Applet läuft, wird durch

    Code
    Frame f = new Frame();
        JDialog popup = new JDialog(f, true);


    ein neues Fenster gezeigt und Text ausgegeben, wie ich es haben will.

    Blöde Frage - hast du eventuell popup.setVisible(true); vergessen? Je nach LayoutManager wirst du wohl auch ein popup.pack(); brauchen um die richtige Fenstergröße zu setzen.

    Zitat


    FF sagt mir nicht, dass Popups gestartet werden wollen und er das unterbindet, so, wie ers sonst macht....

    Das sind keine Popups in dem Sinne (du machst ja kein neues Browserfenster auf). Die Java-Applet-Fenster werden meineswissens nach nicht geblockt, dafür erscheint bei nicht-vertrauten Applets unten ein Label mit "Java Applet Window." odgl.

    100% trivial :thumb:

  • jupp, hab ich beides dabei:

    Code
    popup.pack(); 
        popup.setVisible(true);

    als letztes steht das....unter Eclipse funktionierts ja auch, nur in der großen, weiten Welt nicht mehr.....

    EDIT: jetzt ist mir grad die Idee wegen der weiten Welt gekommen, obs viell. funktioniert, wenn ichs lokal von der Festplatte aus aufruf, nix da.... ;)

    Ihr glücklichen Augen, Was je ihr gesehen, Es sei wie es wolle, Es war doch so schön!

  • unter Eclipse funktionierts ja auch, nur in der großen, weiten Welt nicht mehr.....

    Ich habe gerade so was implementiert und es funktioniert prima (Linux/Firefox 3.1). Ich tippe also mal darauf, dass du irgendwo einen Bug oder ein Konfigurationsproblem hast. Mögliche Ursachen sind eine alte JAR (nicht neu generiert oder das Java-Plugin nimmt noch eine alte Version aus dem Cache, wo setVisible() odgl nicht aufgerufen wird) oder, je nach Komplexität der Applikation, irgendwas bei der HTML-Einbindung, falsche Parameter, nicht gefundene Ressourcen, eine Exception zur Laufzeit (obwohl das mit Eclipse auch auftauchen sollte)...

    100% trivial :thumb:

  • hm.....
    kannst du mir das mal posten, was genau du implementiert hast? :)

    Danke übrigens für deine Hilfe! :)

    Ihr glücklichen Augen, Was je ihr gesehen, Es sei wie es wolle, Es war doch so schön!

  • Siehe Attachment. Die .java-Datei ist auch in der JAR enthalten, einfach entzippen, ausprobieren, dann in Eclipse das Projekt aus der JAR importieren.

    Beachte auch, dass sich Firefox scheinbar aufhängt, während der JDialog sichtbar ist - man muss es vermutlich auf nicht-modal setzen.

    100% trivial :thumb:

  • Ich hab auch schon eine andere Methode, ähnlich zu deiner, gefunden...und sie funktioniert auch. Nur, wenn ich das dann in meinen vorhanden Code einfüge (auch, wenn ich den vorhandenen Code dadurch ersetze) gehts nicht :(

    Versteh ich nicht.....
    Danke auf jeden Fall!!

    Ihr glücklichen Augen, Was je ihr gesehen, Es sei wie es wolle, Es war doch so schön!

  • Hi,

    Lässt du das in Eclipse eh auch als Java-Applet laufen und der Code für das Popup befindet sich in der init-Methode und nicht in der main-Methode.

    Wenn ja poste bitte mal deine Appletklasse bzw. dein Eclipseprojekt denn bei mir funktioniert das problemlos.

  • Lässt du das in Eclipse eh auch als Java-Applet laufen und der Code für das Popup befindet sich in der init-Methode und nicht in der main-Methode.

    Ja, ich lass das als Java-Applet laufen....

    Ich hab die gui mit Netbeans erstellt und dort wird folgende init Methode generiert:

    Meine Methode steht in der selben Klasse wie die init Methode, wurde nicht erzeugt sondern selbst geschrieben und sieht zur Zeit (ich probier immer wieder dran rum) so aus (falls das wichtig ist: die Exportfunktion wird über eine Menubar aufgerufen, nämlich unter File -> Export ...kanns daran auch liegen? :(

    Das mit dem Parentframe hab ich von da: http://www.jguru.com/faq/view.jsp?EID=27423

    Wenn ich das Beispiel genauso nachmach, dann gehts bei mir auch auf (nur lässt sich das popup nicht schließen, nur so ne Anmerkung ;) ), aber wenn ichs dort in meinen Code reinpfusch nix mehr.... und unter Eclipse läufts natürlich auch tadellos.

    Da du main erwähnst: jetzt weiß ich endlich mit Sicherheit, dass die init() meine Hauptmethode ist, ich wollte nämlich ne zeitlang mit Gewalt eine main() erstellen und die dann starten....ging nicht, also hab ichs gelassen ;)

    Ihr glücklichen Augen, Was je ihr gesehen, Es sei wie es wolle, Es war doch so schön!

  • Hi,

    Hab noch mal versucht das nachzustellen mit deinen Codeausschnitt und das funktioniert noch immer problemlos. Bist du dir sicher das die Methode überhaupt aufgerufen wird? Poste bitte das ganze Eclipseprojekt dann kann ich das vielleicht reproduzieren

  • SO!

    Danke für eure Hilfe, ich hab den "Fehler" gefunden. Die Anführungszeichen mach ich, weil ich nicht finde, dass es ein Fehler meinerseits ist, sondern es da irgendwo anders was hat (ich gebe auch ungern Fehler zu ;P)

    Die Erklärung:
    In meinem Code übergibt die "eqpanel.writeToFile()" Methode einen String, der den Pfad zu einer temporär angelegten Datei angibt. Ich weiß zwar jetzt nicht mehr, ob ich das auch einmal in den Tests ausgelassen hab, jedenfalls wird von dieser Datei über einen Stream gelesen und sobald man auch nur irgendetwas mit Streams erwähnt, hängt das ganze Zeug und macht nicht mehr weiter. Also dort im try-catch Block. Ich glaub, ich hab auch zwischendurch mal keine tempdatei verwendet, aber könnte auch sein, dass die tempFileVerwendung eine blöde Idee war (Java läuft in ner Sandbox und kann wahrscheinlich nicht auf die system-temp-ordner zugreifen).

    Die Lösung: ich übergebe keinen Pfad mehr sondern einen String, in dem schon alles drinnensteht, was geprintet werden soll und mit "mypane.setText(string);" wird dann alles so gedruckt, wie ichs wollte :)

    Danke nochmal an viper, ich hab deinen Code in meiner geistigen Umnachtung gestern nicht mehr verwenden können (für meine Zwecke, ausführen ging ja). Hab dann aber heute einfach mal die paar Zeilen in meinen Code genommen, gesehen, dass es geht und immer mehr hinzugefügt bis bei den Reader/Streams Schluss war. Ich hab übrigens den Konstruktor mit modal-boolean-Angabe nehmen müssen (habs auf false gesetzt), sonst wärs wieder nicht gegangen ;)

    Aja und noch btw: ich bin stinkesauer auf Firefox und Opera, weil ich jeden der beiden immer schließen musste, bevor sie dazu bereit waren, die neueste jar von meiner Festplatte in der geöffneten htmlseite zu laden. Das hat jede Menge Zeit verbraten....

    Ihr glücklichen Augen, Was je ihr gesehen, Es sei wie es wolle, Es war doch so schön!

  • Aja und noch btw: ich bin stinkesauer auf Firefox und Opera, weil ich jeden der beiden immer schließen musste, bevor sie dazu bereit waren, die neueste jar von meiner Festplatte in der geöffneten htmlseite zu laden. Das hat jede Menge Zeit verbraten....

    Cache leeren hat nicht funktioniert?

    There's no better place than 127.0.0.1!

  • Aja und noch btw: ich bin stinkesauer auf Firefox und Opera, weil ich jeden der beiden immer schließen musste, bevor sie dazu bereit waren, die neueste jar von meiner Festplatte in der geöffneten htmlseite zu laden. Das hat jede Menge Zeit verbraten....

    Hast probiert shift zu halten, wenn du auf Reload drückst?

    In einen FBO rendern ist wie eine Schachtel Pralinen - man weiß nie, was man kriegt.

  • Cache leeren hat nicht funktioniert?

    Ich hab ja alle 30 sek neu laden wollen....da hab ich opera einfach abgedreht und wieder gestartet, ist wenigstens schneller als FF...
    Ich hab probiert, den Cache auf 0kb zu stellen, hat aber bei beiden nichts gebracht, ka, warum... :(

    Zitat

    Hast probiert shift zu halten, wenn du auf Reload drückst?


    Für Firefox hatte ich gedacht, dass super+reload klicken wirklich neu lädt. Als es nur um das updaten von einer htmlseite ging, hat das nämlich funktioniert, sobald ich aber das Applet neu geladen haben wollte, hat er gestreikt...vielleicht lags daran, weil ichs von meiner Festplatte geladen hab und nicht aus dem www?

    Ihr glücklichen Augen, Was je ihr gesehen, Es sei wie es wolle, Es war doch so schön!

  • Das heißt, dass ich FF und Opera Unrecht getan hab?
    Wieso aber kann man das nicht so einfach machen? Gerade für die Entwicklung von soetwas ist es ja unablässlich, immer wieder neu zu laden....hat daran noch keiner vorher gedacht? :)

    Ihr glücklichen Augen, Was je ihr gesehen, Es sei wie es wolle, Es war doch so schön!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!