una - ventana emergente javafx
Cómo crear ventanas emergentes en javafx (4)
Esta pregunta ya tiene una respuesta aquí:
- Panel emergente personalizado JavaFX 2 1 respuesta
Quiero crear ventanas emergentes en la aplicación javafx. Dame una idea.
cuando hago clic en el botón de verificación, abro las ventanas emergentes. ¿cómo hacer?
¿Has analizado el control ControlsFx Popover ?
import org.controlsfx.control.PopOver;
import org.controlsfx.control.PopOver.ArrowLocation;
private PopOver item;
final Scene scene = addItemButton.getScene();
final Point2D windowCoord = new Point2D(scene.getWindow()
.getX(), scene.getWindow().getY());
final Point2D sceneCoord = new Point2D(scene.getX(), scene.
getY());
final Point2D nodeCoord = addItemButton.localToScene(0.0,
0.0);
final double clickX = Math.round(windowCoord.getX()
+ sceneCoord.getY() + nodeCoord.getX());
final double clickY = Math.round(windowCoord.getY()
+ sceneCoord.getY() + nodeCoord.getY());
item.setContentNode(addItemScreen);
item.setArrowLocation(ArrowLocation.BOTTOM_LEFT);
item.setCornerRadius(4);
item.setDetachedTitle("Add New Item");
item.show(addItemButton.getParent(), clickX, clickY);
Esto es solo un ejemplo, pero un PopOver parece que podría lograr lo que quieres. Consulte la documentación para obtener más información.
Nota importante: ControlsFX solo funcionará en JavaFX 8.0 b118 o posterior.
Eche un vistazo a jfxmessagebox ( http://en.sourceforge.jp/projects/jfxmessagebox/ ) si está buscando ventanas emergentes de diálogo muy simples.
Puede crear una nueva Stage
, agregar sus controles o si necesita la ventana POPUP como cuadro de Dialog
, entonces puede considerar usar DialogsFX o ControlsFX (Requiere JavaFX8)
Para crear una nueva etapa, puede usar el siguiente fragmento
@Override
public void start(final Stage primaryStage) {
Button btn = new Button();
btn.setText("Open Dialog");
btn.setOnAction(
new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
final Stage dialog = new Stage();
dialog.initModality(Modality.APPLICATION_MODAL);
dialog.initOwner(primaryStage);
VBox dialogVbox = new VBox(20);
dialogVbox.getChildren().add(new Text("This is a Dialog"));
Scene dialogScene = new Scene(dialogVbox, 300, 200);
dialog.setScene(dialogScene);
dialog.show();
}
});
}
Si no desea que sea modal
(bloquee otras ventanas), use:
dialog.initModality(Modality.NONE);
La clase Popup podría ser mejor que la clase Stage, dependiendo de lo que quieras. El escenario es modal (no puede hacer clic en otra cosa en su aplicación) o desaparece si hace clic en otra parte de la aplicación (porque es una ventana separada). Popup permanece en la parte superior, pero no es modal.
Vea este ejemplo de ventana emergente .