Hallo,
wir haben die Option in unserer auf Eclipse-basierten Benutzeroberfläche
JavaScript-Skripte abarbeiten zu lassen.
Ich habe das Problem, dass wenn ich ein Dialogfenster mit Yes/No-Abfrage
öffnen lasse, dass dieses Fenster sporadisch auch im Hintergrund
auftaucht und vom Nutzer dann nicht gesehen wird. Gibt es eine
Möglichkeit dafür zu sorgen, dass das Fenster in jedem Fall im
Vordergrund erscheint, oder ist das eine Microsoft-Geschichte?
Der verwendete Java-Script-Code lautet:
var n = Packages.javax.swing.JOptionPane.showConfirmDialog(null,
"Koennen Sie das Fenster sehen?", "Question",
Packages.javax.swing.JOptionPane.YES_NO_OPTION);
danielS schrieb:> Der verwendete Java-Script-Code lautet:
Das ist kein JS!
danielS schrieb:> Gibt es eine> Möglichkeit dafür zu sorgen, dass das Fenster in jedem Fall im> Vordergrund erscheint, oder ist das eine Microsoft-Geschichte?
Du kannst statt dem Einzeiler den Dialog explizit erstellen und
konfigurieren, so ungefähr wie unter "Direct Use" hier:
https://docs.oracle.com/javase/8/docs/api/index.html?javax/swing/package-summary.html
Dort könntest du dann toFront() aufrufen. Da das eigentlich sowieso
passieren sollte, tippe ich aber auf ein anderes Problem im
Zusammenspiel mit irgendetwas anderem.
danielS schrieb:> Wie das ist kein JS? :D Es funktioniert aber einwandfrei
Ob etwas funktioniert oder nicht, sagt nichts darüber aus, ob es
Javascript ist oder nicht.
Vermutlich ist Dir nicht klar, dass "Java" und "Javascript" zwei völlig
verschiedene Sprachen sind.
Dein Beispiel ist "Java".
- Eclipse ist in "Java" geschrieben.
- "javax", "swing", "JOptionPane" sind alles "Java"-Elemente.
aber es funktioniert ganz offensichtlich in einer Datei mit Endung .js,
in der auch sämtliche JavaSkript-Befehle durch Google-Recherche
enthalten sind. Also unterstützt JavaSkript ja offensichtlich auch diese
Notation, oder?^^
danielS schrieb:> Also unterstützt JavaSkript ja offensichtlich auch diese> Notation, oder?^^
Das ist keine Frage der Notation, denn syntaktisch sind sich die beiden
sowieso ziemlich ähnlich. Es sind trotzdem zwei grundverschiedene
Sprachen (Google, wenn es dir nicht klar ist ...) und Swing hat nun
wirklich überhaupt nichts mit JS zu tun. Diese ganze Bibliothek gehört
zu Java und funktioniert nur mit Java.
"Offensichtlich" ist außerdem gar nichts. Ich sehe die ganz reale
Möglichkeit, dass Eclipse den Dateinamen ignoriert, solange der Inhalt
passt. Seit EASE unterstützt Eclipse nämlich auch JS, also macht es
durchaus Sinn, hier etwas großzügiger zu sein, solange der Inhalt
interpretierbar ist.
danielS schrieb:> Der verwendete Java-Script-Code lautet:>> var n = Packages.javax.swing.JOptionPane.showConfirmDialog(null,> "Koennen Sie das Fenster sehen?", "Question",> Packages.javax.swing.JOptionPane.YES_NO_OPTION);
Eigentlich wollte ich damit anfangen, dass das Java ist - nicht
Javascript.
Allerdings ist mir dann das "var n = ..." aufgefallen.
Sollte es tatsächlich noch jemanden auf diesem Planeten geben, der
JS-Swing verwendet?
Aber seis drum...
Du verwendest <null> als parent (erster Parameter).
Kann man machen. Aber wenn Du sicherstellen willst, dass der Dialog
immer modal im Bezug auf ein bestimmtes Anwendungsfenster ist, muss dort
ein parent angegeben werden. Siehe Doku.
Wenn es sich allerdings wirklich um Javascript handelt und die Anwendung
in einem Browser ausgeführt wird, dann wird es schon schwieriger. Der
Browser dürfte die Steuerung des Dialogfensters stark einschränken.
Ich würde daher empfehlen, mich nach Alternativen umzusehen.
Im Web-Umfeld gibt es die ja zuhauf.
Generell wäre es sicher eine gute Idee, JS-Swing auszubauen. Das war zu
Zeiten des IE6 schon schlimm.