Forum: PC-Programmierung Wie Yes/No-Abfrage in JavaScript in den Vordergrund rücken?


von danielS (Gast)


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);

von Heiner (Gast)


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.

von danielS (Gast)


Lesenswert?

Wie das ist kein JS? :D Es funktioniert aber einwandfrei

von Sonyo (Gast)


Lesenswert?

Das ist Java, aber kein JavaScript.

von Einer (Gast)


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.

von danielS (Gast)


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?^^

von Heiner (Gast)


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.

von Driver (Gast)


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.

von bashooka (Gast)


Lesenswert?

Driver schrieb:
> Allerdings ist mir dann das "var n = ..." aufgefallen.

var gibts für lokale Variablen seit Java 10.

von bashooka (Gast)


Lesenswert?

Da gibts tatsächlich was für Javascript um Swingmässig unter JS GUI zu 
bauen, äh naja sehr rudimentär das Ganze:

http://jsswing.sourceforge.net/

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.