popup - ventana - Panel emergente personalizado JavaFX 2
ventana emergente java netbeans (1)
Es un poco difícil hacerlo bien con la API actual de JavaFX 2.2.
Aquí hay algunas opciones.
Use un MenuButton con un conjunto de gráficos en su MenuItem
Este es el enfoque adoptado en Button con ventana emergente que se muestra debajo del código de muestra ejecutable.
Use un PopupControl
Eche un vistazo a cómo ColorPicker hace esto en su código .
ColorPicker amplía PopupControl . Puedes hacer esto, pero no toda la API requerida para construir tu propio PopupControl es actualmente pública. Por lo tanto, para JavaFX 2.2, debe confiar en las clases com.sun internas que están en desuso y serán reemplazadas por las clases públicas javafx.scene.control en JDK8.
Use un ContextMenu
Entonces, creo que su idea de "usar un ContextMenu y agregar un panel a un MenuItem" es probablemente el mejor enfoque por el momento. Debería poder hacerlo utilizando un CustomMenuItem o configurando un gráfico en un MenuItem
normal. El ContextMenu
tiene una buena lógica de posicionamiento relativo . Un ContextMenu
también puede ser activado por un MenuButton .
Use un cuadro de diálogo personalizado
Para hacer esto, muestre una etapa transparente en una ubicación relativa al nodo.
Hay un código de muestra para comenzar que he vinculado aquí temporalmente. El código de muestra realiza un posicionamiento relativo a los lados de la ventana principal, pero puede actualizarlo para realizar un posicionamiento relativo a los lados de un nodo determinado (como el método de presentación ContextMenu).
Use un panel de vidrio
Para hacer esto, crea un StackPane como tu raíz de tu ventana principal. Coloque su panel de contenido principal como el primer nodo en el StackPane y luego cree un grupo como el segundo nodo en el panel de distribución, de modo que se superponga sobre el contenido principal. Normalmente, el grupo superior no contiene nada, pero cuando desea mostrar su ventana emergente, colóquelo en el grupo superior y tradúzcalo a una ubicación relativa al nodo apropiado en su contenido principal.
Puede ver cómo se utilizan los nodos de anclaje en esta demostración para ver cómo esto puede adaptarse a su contexto.
¿Hay alguna actualización relevante para esto para JavaFX8?
No hay mucha diferencia de relevancia para Java 8, en general las opciones son las que se detallan en esta publicación basadas en la funcionalidad de Java 2.2. Java 8 agrega la funcionalidad Dialog y Alert , pero están más orientadas al uso de cuadros de diálogo con bordes, títulos y botones en lugar del tipo de funcionalidad deseada en la pregunta. Tal vez pueda comenzar desde la clase Dialog y personalizarla en gran medida para obtener algo parecido a lo que se necesita, pero es mejor que empiece desde una etapa en blanco o PopupControl en su lugar.
El selector de color JavaFX 2 tiene un botón que muestra un panel seleccionador de color así:
Me gustaría hacer algo similar, en el sentido de que me gustaría que aparezca un panel personalizado cuando se haga clic en el botón y desaparezca cuando se haga clic en otra cosa (en mi caso, algunas miniaturas de imágenes). ¿Cuál sería la mejor manera de lograr esto? ¿Debo usar un ContextMenu y agregar un panel a un MenuItem de alguna manera, o hay algo más que debería ver?