当前位置: 首页 > 面试题库 >

ImageView在JavaFX中不起作用

郑曜灿
2023-03-14
问题内容

不仅如此,其他代码也有相同的问题。只是不能使用ImageView。

环境:macOS,IntelliJ

造成原因:java.lang.IllegalArgumentException:无效的URL:无效的URL或找不到资源

public class ShowHboxVbox extends Application {

    static  String s = "/Users/fangyuan/Desktop/PIC.png";

    @Override
    public void start(Stage primaryStage) {
        BorderPane borderPane = new BorderPane();
        borderPane.setTop(getHbox());

        Scene scene = new Scene(borderPane);
        primaryStage.setTitle("title");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    private HBox getHbox() {
        HBox hBox = new HBox(15);
        hBox.setPadding(new Insets(15,15,15,15));
        hBox.setStyle("-fx-background-color: gold");
        hBox.getChildren().add(new Button("computer science"));
        hBox.getChildren().add(new Button("chemist"));
        ImageView imageView = new ImageView(new Image(s));
        hBox.getChildren().add(imageView);
        return hBox;
    }
}

问题答案:

该图像构造函数接受一个url作为参数。如果您未在其中添加协议,则它将假定该项目来自类路径。显然,/Users/fangyuan/Desktop/PIC.png不会出现在您的类路径中。

要从文件而不是类路径中读取,请将file://协议放在要读取的路径前面:

file:///Users/fangyuan/Desktop/PIC.png

要么

Paths.get("/Users/fangyuan/Desktop/PIC.png").toUri().toString()

这将输出相同的东西。



 类似资料:
  • 我面临的问题,以开发一个演示JavaFX程序的图像查看作为一个新手。这里,我在BorderPane中心位置有一个ImageView,它用StackPane和VBox包装。其中StackPane总是与VBox一起增长,我将ImageView与StackPane Width和Height属性绑定在一起,这样当我调整窗口大小时,ImageView就会改变它的设置亮度和重量。它的工作很好,我想,但问题是,

  • 我尝试了以下代码来创建动态TextField,并将其添加到ScrollPane中的VBox中。但我面临的问题是,如果添加的TextField数量超过了TextField在ScrollPane中不可见。 行ScrollPane.setvValue(double.max_value);不起作用。 ScrollPaneDemo.java TextFieldClass.java

  • 早上好!我刚刚开始学习Java FX和Java FX FXML。我使用Scene Builder来构建GUI,Netbeans来编写剩下的Java FX程序。 我面临的问题是在FXML文件中。Netbeans编辑器在.fxml文件中为onAction事件显示以下代码的错误。 如果我使用Netbeans创建一个示例项目,它将使用AnchorPane,并且一切似乎都很好。但是,如果我删除AnchorP

  • 我想在JavaFX的ImageView中显示图像。图像应该从SQLite数据库中获取,并在场景加载时显示。我使用以下代码片段从数据库获取代码,并在之前创建的ImageView中显示它。但是图像没有按预期显示。我做错了吗?P. S.我测试了改变路径在两个和当读取文件从目录到。但似乎没有什么奏效。但是当我手动将一个图像文件放在src目录中并尝试读取它时,它就像一个魅力。但是我想展示一张从数据库中提取的

  • 我在FXML上使用加载图像时遇到问题。 我的控制器类:

  • 我无法设置TextField的文本。没有错误,但Textfield仍然为空。程序的其余部分正在工作,方法被调用,system.out.println(...)打印正确的文本。所以问题是,不能设置textfield的文本。即使我只是写textfield.settext(“0”);textfield仍然为空。当我在public void initialize(...)下为textfield设置文本时也