【问题标题】:Java FX custom picture in alert dialog警告对话框中的 Java FX 自定义图片
【发布时间】:2016-12-05 12:17:01
【问题描述】:

我是 JavaFx 的新手,我想做的是创建一个带有自定义图片的警报对话框。

首先,我使用的是IntelliJ idea,但我不知道在项目中找到.jpg 文件的位置(见附图)。

其次,将图片添加到项目后,我该如何进行?

 Alert alert = new Alert(Alert.AlertType.ERROR, "Error", ButtonType.OK);
        alert.showAndWait();

谢谢

【问题讨论】:

    标签: java intellij-idea javafx


    【解决方案1】:

    在 IntelIJ 中包含资源已经是多个问题的主题,我不再在这里回答。请阅读有关此主题的其他问题的答案之一,例如maba's answer to adding resources in intellij for java project.


    可以通过将ImageView 设置为graphic 来使用自定义图像Dialog:

    Image image = new Image("https://upload.wikimedia.org/wikipedia/commons/thumb/4/42/Emojione_1F62D.svg/64px-Emojione_1F62D.svg.png");
    ImageView imageView = new ImageView(image);
    alert.setGraphic(imageView);
    alert.showAndWait();
    

    请注意,此示例使用来自网络的图像。对于作为资源添加的图像,您可以使用类似

    Image image = new Image(getClass().getResource("/path/to/resource/image.jpg").toExternalForm());
    

    改为。

    【讨论】:

      【解决方案2】:

      本教程可以给你更好的解决方案。javafx 8 dialogs

      或者你也可以使用下面的代码

      protected Alert createAlert(){
          Alert alert = new Alert(AlertType.WARNING);
      
          alert.initModality(Modality.APPLICATION_MODAL);
          alert.initOwner(stage);
          alert.getDialogPane().setContentText("Some text");
      
          DialogPane dialogPane = alert.getDialogPane();
          GridPane grid = new GridPane();
          ColumnConstraints graphicColumn = new ColumnConstraints();
          graphicColumn.setFillWidth(false);
          graphicColumn.setHgrow(Priority.NEVER);
          ColumnConstraints textColumn = new ColumnConstraints();
          textColumn.setFillWidth(true);
          textColumn.setHgrow(Priority.ALWAYS);
          grid.getColumnConstraints().setAll(graphicColumn, textColumn);
          grid.setPadding(new Insets(5));
      
          Image image1 = new Image("http://www.mcaprojecttraining.com/images/java-big-icon.png");
          ImageView imageView = new ImageView(image1);
          imageView.setFitWidth(64);
          imageView.setFitHeight(64);
          StackPane stackPane = new StackPane(imageView);
          stackPane.setAlignment(Pos.CENTER);
          grid.add(stackPane, 0, 0);
      
          Label headerLabel = new Label("Warning");
          headerLabel.setWrapText(true);
          headerLabel.setAlignment(Pos.CENTER_RIGHT);
          headerLabel.setMaxWidth(Double.MAX_VALUE);
          headerLabel.setMaxHeight(Double.MAX_VALUE);
          grid.add(headerLabel, 1, 0);
      
          dialogPane.setHeader(grid);
          dialogPane.setGraphic(null);
      
          alert.showAndWait()
              .filter(response -> response == ButtonType.OK)
              .ifPresent(response -> System.out.println("The alert was approved"));
      
          return alert;
      }
      

      资源链接:

      1. Set image on left side of dialog
      2. How do you set the icon of a Dialog control Java FX/Java 8

      【讨论】:

        【解决方案3】:

        首先添加GridPane

                GridPane grid = new GridPane();
                grid.setHgap(10);
                grid.setVgap(10);
                grid.setPadding(new Insets(10, 10, 10, 10));
                ImageView customImage = new ImageView(new Image("/home/mani/Desktop/img.jpg", 100, 80, false, true));
                grid.add(customImage, 0, 0);
                // make a dialog 
                final Dialog dlg = new Dialog(null, "myDailog-with-Image");
                // Add grid inside dialog.
                dlg.setContent(grid);
                dlg.show();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-04-08
          相关资源
          最近更新 更多