2016-04-11 12 views
0

In meiner Anwendung habe ich einen Multi-Step-Formular-Assistenten, in dem die nächste Schaltfläche deaktiviert ist, sofern nicht alle erforderlichen Felder eingegeben werden.JavaFX Capture-Ereignisse einer deaktivierten Schaltfläche

Einige Felder erfordern eine zusätzliche Überprüfung, z. B. die Verzeichnisauswahl, , für die ich prüfen muss, ob das Verzeichnis existiert oder nicht.

Um die Benutzerfreundlichkeit zu erleichtern, muss ich neben dem Textfeld "Verzeichnis" einen Tooltip "Ungültiges Verzeichnis" anzeigen.

Ich möchte die Tooltips anzeigen, wenn der Benutzer versucht, auf die Schaltfläche " nächste Schaltfläche" zu klicken/einzugeben.

Ist es möglich, Ereignisse zu erfassen, die auf einer deaktivierten Schaltfläche in JavaFX ausgeführt werden?

public void nextEntered(Event event) { 
    Button button = (Button)event.getSource(); 
    if(button.isDisabled()){ 
     validate(currentTab); 
    } 
} 
+0

https://docs.oracle.com/javase/8/javafx/api/javafx/scene/Node.html#disabledProperty "Ein deaktivierter Knoten empfängt keine Maus- oder Schlüsselereignisse." Also denke ich, dass es am besten wäre, die Mausposition in der Szene zu überprüfen und den Tooltip zu generieren, wenn der Cursor die Grenzen der Schaltfläche schneidet. –

+0

Warum wird das Verzeichnis direkt nach der Auswahl nicht überprüft? Sie könnten der TextProperty von InputField einen ChangeListener hinzufügen oder, wenn Sie den JavaFX FileChooser verwenden, direkt prüfen, ob der Ordner existiert. – Rikan

+0

@el_chupacabra Das habe ich getan, ich habe der Szene einen Ereignis-Listener hinzugefügt und überprüft, ob die Koordinaten des Klicks innerhalb der Grenzen der Schaltfläche liegen. Ich habe mich nur gefragt, ob es eine elegantere Lösung gibt, anscheinend nicht. Vielen Dank. – johndoe

Antwort

0

Ich hatte ein ähnliches Problem, wo ich ein Tooltip eines behinderten Feldwertes, wenn der Benutzer über moused, dass behindertes Feld zeigen wollte.

Ich landete schließlich ein leeres Etikett über das deaktivierte Feld und ein Mausereignis daran anhängen.

Im Fall einer Schaltfläche können Sie einfach die Dummy-Label-Maus Transparenz geben, wenn die Schaltfläche aktiviert wird, so dass der Benutzer auf die Schaltfläche klicken kann.

(Man könnte sogar in der Lage sein, die Beschriftung der Maus Transparenz-Eigenschaft auf die Schaltfläche der Eigenschaft enabled zu binden, aber ich bin mir nicht sicher.)

Ich weiß, das vor einem Jahr gefragt wurde, aber vielleicht wird es jemanden anderes helfen.

Verwandte Themen