2014-06-11 10 views
6

Il titolo dice tutto: ho un rettangolo in JavaFX (per effetti di trasparenza/opacità) ma voglio che le persone possano "cliccarci sopra".JavaFX Rende visibile l'oggetto ma non consuma (ignora) i clic

Quindi quando dico click through, voglio dire quando lo fai clic, Java dovrebbe fingere che non sia lì e invece 'fare clic' su qualunque cosa si trovi sotto quell'oggetto. Quando rendi invisibile qualcosa con setVisible (false), questo è esattamente ciò che accade: qualsiasi oggetto impostato invisibile non consuma gli eventi di clic generati dal tuo mouse. Tuttavia, l'oggetto diventa invisibile - qualcosa che non voglio.

È possibile? Grazie per l'aiuto che puoi fornire!

risposta

10

Tutti Node s in JavaFX hanno un metodo setMouseTransparent(), come dettagliato here, dove la struttura è mouseTransparent:

Se vero, questo nodo (insieme con tutti i suoi figli) è completamente trasparente agli eventi del mouse. Quando si sceglie l'obiettivo per l'evento del mouse, i nodi con mouseTransparent impostato su true e i relativi sottoalberi non verranno presi in considerazione.

Se avete bisogno di effetti di trasparenza del mouse più complesse, come ad esempio avendo solo il nodo genitore essere trasparente, può essere necessario combinare che con qualche altro metodo di trattare con rilevamento dei clic ( il suo nome mi sfugge al momento I penso che fosse pickOnBounds; per quanto riguarda il modo di usarlo, non posso dirlo con certezza. Penso di averlo più abusato impostando letteralmente tutto nella mia app su true o false, ma non ricordo quale, e sfortunatamente non sarebbe in grado di dirti di quali nodi avresti bisogno per impostare quella proprietà), ma per una trasparenza del mouse semplice che dovrebbe funzionare.