Je veux créer une fenêtre contextuelle dans javafx application.Give-moi une idée.
lorsque je clique sur le bouton de vérification, ouvrez les fenêtres contextuelles. comment faire?
Vous pouvez soit créer un nouveau Stage
, y ajouter vos contrôles ou si vous avez besoin du POPUP en tant que Dialog
, alors vous pouvez envisager d'utiliser DialogsFX ou ControlsFX (Nécessite JavaFX8)
Pour créer une nouvelle scène, vous pouvez utiliser l'extrait de code suivant
@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 vous ne voulez pas que ce soit modal
(bloquez les autres fenêtres), utilisez:
dialog.initModality(Modality.NONE);
La classe Popup peut être meilleure que la classe Stage, selon ce que vous voulez. La scène est soit modale (vous ne pouvez cliquer sur rien d'autre dans votre application), soit elle disparaît si vous cliquez ailleurs dans votre application (car c'est une fenêtre distincte). Le pop-up reste au top mais n'est pas modal.
Voir cet Popup Window exemple.
Avez-vous étudié contrôle 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);
Ce n'est qu'un exemple, mais un PopOver semble pouvoir accomplir ce que vous voulez. Consultez la documentation pour plus d'informations.
Remarque importante: ControlsFX ne fonctionnera que sur JavaFX 8.0 b118 ou version ultérieure.
Jetez un œil à jfxmessagebox ( http://en.sourceforge.jp/projects/jfxmessagebox/ ) si vous recherchez des fenêtres de dialogue très simples.