Wie Yes/No-Abfrage in JavaScript in den Vordergrund rücken?

Gast #6828446
Lesenswert?

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);
Gast #6828560
Lesenswert?

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.
Gast #6829030
Lesenswert?

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.
Gast #6829037
Lesenswert?

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?^^
Gast #6829134
Lesenswert?

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.
Gast #6829157
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren