我正在创建JavaFX Dialog
,并希望将default icons
用于信息/警告/错误。
在Swing中,我可以通过这种方式获取信息图标:
UIManager.getIcon("OptionPane.informationIcon")
我如何在JavaFX中做同样的事情?
答案 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();
}
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();
这两个例子的这一部分都很棘手。我注意到这不起作用,除非我将图像放在与.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