web-dev-qa-db-ja.com

JavaFX 2.1メッセージボックス

良い一日!
JavaFX SDKを使用してプログラムを開発しています。 C#のようなメッセージボックスが必要でした。

DialogResult rs = MessageBox.showDialog("Message Here...");
if (rs == ....) {
    // code
}

このような機能をJavaFX SDKで実現したいのですが。回答は大歓迎です。

11
iSa

更新

Java8u40以降、コアJavaFXライブラリにはダイアログ(メッセージボックス)機能が含まれています。次のクラスのドキュメントを参照してください。

Alertクラスの使用方法に関する簡単な情報については、この質問に対する他の回答を参照してください。

より長いチュートリアルについては、 Makery JavaFXダイアログチュートリアル を参照してください(このチュートリアルはhighlyを推奨します)。

元の回答

Modal Confirm ダイアログの例を次に示します。ダイアログコンテンツを含むシーンを含むステージを作成し、そのシーンでshow()を呼び出すことで機能します。

新しいステージが表示されている間にメイン処理スレッドを一時停止させ、JavaFX 2.2以降を使用している場合は、表示ではなくステージでshowAndWait()を呼び出すことができます。表示と待機を使用してメッセージと[OK]ボタンを表示するように変更すると、処理はC#のメッセージボックスと非常によく似た動作をします。

Java 8のプロ並みのメッセージボックスが必要な場合は、JavaFX UIのダイアログの後の反復である ControlsFXライブラリ のダイアログを使用することをお勧めします。 blo0p3rの回答で言及されているサンドボックスを制御します。

6
jewelsea

https://docs.Oracle.com/javase/8/javafx/api/javafx/scene/control/Alert.html

AlertクラスはDialogクラスのサブクラスであり、ユーザーに応答を要求するように簡単に表示できる、事前に作成されたいくつかのダイアログタイプのサポートを提供します。

したがって、コードは次のようになります

Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("Message Here...");
alert.setHeaderText("Look, an Information Dialog");
alert.setContentText("I have a great message for you!");
alert.showAndWait().ifPresent(rs -> {
    if (rs == ButtonType.OK) {
        System.out.println("Pressed OK.");
    }
});
19

OSSによるJavaFX 2.2のMessageBoxは here です

それはあなたを助けると思います。

MessageBox.show(primaryStage,
    "Message Body",
    "Message Title", 
    MessageBox.ICON_INFORMATION | MessageBox.OK | MessageBox.CANCEL);
4
Tosiki Iga

次に、別の簡単な代替方法を示します。 https://sites.google.com/site/martinbaeumer/programming/open-source/fxmessagebox

驚いたことに、JavaFX 2.2にはまだ標準のメッセージボックスがありません。

3
Martin Baeumer

名前空間を使用します。

import javafx.scene.control.Alert;

メインスレッドからの呼び出し:

public void showAlert() { 
    Alert alert = new Alert(Alert.AlertType.INFORMATION);
    alert.setTitle("Message Here...");
    alert.setHeaderText("Look, an Information Dialog");
    alert.setContentText("I have a great message for you!");
    alert.showAndWait();
}

メインスレッド以外からの呼び出し:

public void showAlert() {
    Platform.runLater(new Runnable() {
      public void run() {
          Alert alert = new Alert(Alert.AlertType.INFORMATION);
          alert.setTitle("Message Here...");
          alert.setHeaderText("Look, an Information Dialog");
          alert.setContentText("I have a great message for you!");
          alert.showAndWait();
      }
    });
}
3

これは私が最終的に使用したものであり、FX Experienceの JavaFX UI Controls Sandbox の一部 ここ で発表されています:

これは素敵で使いやすいダイアログです。これは私が使用した唯一のものなので、他の人と比較することはできません。問題ありません。

コードは非常に簡潔です。このように見えます:

//calling from a different controller and don't have the scene object loaded.
Stage stage = (Stage)deleteButton.getScene().getWindow();
DialogResponse response = Dialogs.showConfirmDialog(stage, "Are you sure ...", "Confirm deletion","Delete?", DialogOptions.OK_CANCEL);
if(response == DialogResponse.OK) {
    //...
}
1
blo0p3r

これは非常に単純な例です。

0
yasin

現在、このライブラリを使用してダイアログを表示しています。多分それはあなたのために役立つかもしれません:

https://github.com/4ntoine/JavaFxDialog

0
Perneel