良い一日!
JavaFX SDKを使用してプログラムを開発しています。 C#のようなメッセージボックスが必要でした。
DialogResult rs = MessageBox.showDialog("Message Here...");
if (rs == ....) {
// code
}
このような機能をJavaFX SDKで実現したいのですが。回答は大歓迎です。
更新
Java8u40以降、コアJavaFXライブラリにはダイアログ(メッセージボックス)機能が含まれています。次のクラスのドキュメントを参照してください。
Alert
クラスの使用方法に関する簡単な情報については、この質問に対する他の回答を参照してください。
より長いチュートリアルについては、 Makery JavaFXダイアログチュートリアル を参照してください(このチュートリアルはhighlyを推奨します)。
元の回答
Modal Confirm ダイアログの例を次に示します。ダイアログコンテンツを含むシーンを含むステージを作成し、そのシーンでshow()を呼び出すことで機能します。
新しいステージが表示されている間にメイン処理スレッドを一時停止させ、JavaFX 2.2以降を使用している場合は、表示ではなくステージでshowAndWait()を呼び出すことができます。表示と待機を使用してメッセージと[OK]ボタンを表示するように変更すると、処理はC#のメッセージボックスと非常によく似た動作をします。
Java 8のプロ並みのメッセージボックスが必要な場合は、JavaFX UIのダイアログの後の反復である ControlsFXライブラリ のダイアログを使用することをお勧めします。 blo0p3rの回答で言及されているサンドボックスを制御します。
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.");
}
});
OSSによるJavaFX 2.2のMessageBoxは here です
それはあなたを助けると思います。
MessageBox.show(primaryStage,
"Message Body",
"Message Title",
MessageBox.ICON_INFORMATION | MessageBox.OK | MessageBox.CANCEL);
次に、別の簡単な代替方法を示します。 https://sites.google.com/site/martinbaeumer/programming/open-source/fxmessagebox
驚いたことに、JavaFX 2.2にはまだ標準のメッセージボックスがありません。
名前空間を使用します。
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();
}
});
}
これは私が最終的に使用したものであり、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) {
//...
}
これは非常に単純な例です。
現在、このライブラリを使用してダイアログを表示しています。多分それはあなたのために役立つかもしれません: