2017-04-19 8 views
2

alert.initOwner()を使用せずに警告するようにプログラムアイコンを設定するにはどうすればよいですか? なぜならinitOwnerなし?これは、ウィンドウ全体が初期化される前に警告を表示する必要があるため、initOwnerの機能を使用することはできません。JavaFX 8警告するプログラムアイコンを設定するには?

答えて

2

DialogPaneをAlertインスタンスから盗み出して、通常のステージに追加することができます。ノードは、あなたが最初のアラートのシーンのルートを交換する必要があるので、一度に一つのシーンのルートになります

public class AlertWithIcon 
extends Application { 
    @Override 
    public void start(Stage stage) { 
     Alert alert = new Alert(Alert.AlertType.CONFIRMATION, 
      "Are you sure you want to delete this item?", 
      ButtonType.YES, ButtonType.NO); 
     alert.setHeaderText("Delete Item"); 

     DialogPane pane = alert.getDialogPane(); 

     ObjectProperty<ButtonType> result = new SimpleObjectProperty<>(); 
     for (ButtonType type : pane.getButtonTypes()) { 
      ButtonType resultValue = type; 
      ((Button) pane.lookupButton(type)).setOnAction(e -> { 
       result.set(resultValue); 
       pane.getScene().getWindow().hide(); 
      }); 
     } 

     pane.getScene().setRoot(new Label()); 
     Scene scene = new Scene(pane); 

     Stage dialog = new Stage(); 
     dialog.setScene(scene); 
     dialog.setTitle("Delete Item"); 
     dialog.getIcons().add(new Image("GenericApp.png")); 

     result.set(null); 
     dialog.showAndWait(); 

     System.out.println("Result is " + result); 
    } 
} 
+0

ニース!それは私が探していた何かでした、ありがとう:D –

2
public class AlertWithIcon 
extends Application { 
    @Override 
    public void start(Stage stage) { 
     Alert alert = new Alert(Alert.AlertType.CONFIRMATION, 
      "Are you sure you want to delete this item?", 
     ButtonType.YES, ButtonType.NO);  
     alert.setHeaderText("Delete Item"); 
    ((Stage)alert.getDialogPane().getScene().getWindow()).getIcons().add(new image("GenericApp.png")); 
    alert.showAndWait(); 
} 
} 
0

これは、それがどのように行われるかである。

// Get the Stage. 
Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); 

// Add a custom icon. 
stage.getIcons().stage.getIcons().add(new Image("images/logo_full3.png")); 

上記画像参照に問題がある可能性があります。しかし、それが動作する限り、構成を試みることができます。これは私がやる方法です(私はMavenを使用します)。あなたがMavenを使用していない場合は、あなたとは異なるかもしれません。

完全チュートリアル:Alert javafx tutorial

関連する問題