在JavaFX中使用默认图像创建对话框(信息/警告/错误)

时间:2015-06-09 09:39:52

标签: javafx icons

我正在创建JavaFX Dialog,并希望将default icons用于信息/警告/错误。

在Swing中,我可以通过这种方式获取信息图标:

UIManager.getIcon("OptionPane.informationIcon")

我如何在JavaFX中做同样的事情?

3 个答案:

答案 0 :(得分:3)

我问了这个some days ago。我使用此代码制作带有默认图标的标签:

Label img = new Label();
img.getStyleClass().addAll("alert", "error", "dialog-pane");
dialog.setGraphic(img);

答案 1 :(得分:1)

如果你得到图像的副本,你可以使用这些想法。

警示示例:

@FXML void handleHelpButton(ActionEvent event){
        Alert alert = new Alert(AlertType.INFORMATION);
        alert.setTitle("Help");
        alert.setHeaderText("Help");
        alert.setGraphic(new ImageView(this.getClass().getResource("img/help.png").toString()));
        alert.setContentText("Place the cursor over a button for hint.");
        Stage stage = (Stage) alert.getDialogPane().getScene().getWindow();
        stage.getIcons().add(new Image(this.getClass().getResource("img/help.png").toString()));        

        alert.showAndWait();
    }

enter image description here
对话示例:

        ChoiceDialog<String> dialog = new ChoiceDialog<>(currentFullscreenSetting, choices);
        dialog.setTitle("Settings");
        dialog.setHeaderText("Settings");
        dialog.setContentText("Fullscreen on startup: ");
        dialog.setGraphic(new ImageView(this.getClass().getResource("img/settings.png").toString()));
        Stage stage2 = (Stage) dialog.getDialogPane().getScene().getWindow();
        stage2.getIcons().add(new Image(this.getClass().getResource("img/settings.png").toString()));
        // Traditional way to get the response value.
        Optional<String> result = dialog.showAndWait(); 

enter image description here

这两个例子的这一部分都很棘手。我注意到这不起作用,除非我将图像放在与.fxml和controller.java文件相同的文件夹中,或者在同一文件夹中的文件夹中有提到的文件。您可能需要使用文件位置。在我的例子中,似乎我的setGraphic和getIcons图像位于同一个文件夹中,但它们不是。

  

stage.getIcons()。添加(新   图像(this.getClass()的getResource( “IMG / help.png”)的toString()。));

     

我的文件结构如下:

  PlanningChart
  CSS
  IMG
  planningchart
  IMG

第二个img文件夹包含stage.getIcons.add()的图像。图像也可能用于setGraphic。我没试过。

答案 2 :(得分:0)

您无需为JavaFX dialogs创建自定义Info/Warning/Error,因为JavaFX已经为您创建了Alerts

  

Alert类是Dialog类的子类,并为许多预先构建的对话框类型提供支持,这些类型可以很容易地显示给用户以提示响应。

您可以创建不同类型的Alerts,具体取决于AlertType,它会嵌入必要的图片。

对于Information警报使用:

Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("Information Dialog");
alert.setHeaderText("An Information Dialog");
alert.setContentText("Information Message");
alert.showAndWait();

同样,对于Warning提醒,您可以使用

AlertType.WARNING

并且对于Error提醒,您可以使用:

AlertType.ERROR