Javafxアプリケーションでポップアップウィンドウを作成したいのですが、アイデアを教えてください。
チェックボタンをクリックすると、ポップアップウィンドウが開きます。実行する方法?
新しいStage
を作成してコントロールを追加するか、POPUPをDialog
ボックスとして必要とする場合は、 DialogsFX または ControlsFX (JavaFX8が必要)
新しいステージを作成するには、次のスニペットを使用できます
@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();
}
});
}
modal
(他のウィンドウをブロック)にしたくない場合は、次を使用します。
dialog.initModality(Modality.NONE);
Popupクラスは、必要に応じてStageクラスよりも優れている場合があります。ステージはモーダル(アプリ内の他のものはクリックできない)であるか、アプリ内の別の場所をクリックすると消えます(別のウィンドウであるため)。ポップアップは上部に表示されますが、モーダルではありません。
これを参照してください ポップアップウィンドウ の例。
ControlsFx Popover control を調べましたか?.
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);
これは一例にすぎませんが、PopOverは、あなたが望むものを達成できるように思えます。詳細については、 documentation をご覧ください。
重要な注意:ControlsFXはJavaFX 8.0 b118以降でのみ動作します。
非常にシンプルなダイアログポップアップを探している場合は、jfxmessagebox( http://en.sourceforge.jp/projects/jfxmessagebox/ )をご覧ください。