JavaFX中如何正确引入和显示图片的方法详解?
- 后端开发
- 2025-09-27
- 7
在JavaFX中引入图片,通常有以下几种方法:
使用Image类
-
引入图片:你需要将图片文件放在项目的资源文件夹中,如果你的项目名为MyJavaFXProject,你可以将图片文件放在src/main/resources/images文件夹中。
-
加载图片:使用Image类加载图片,以下是一个示例代码:
import javafx.scene.image.Image; public class Main { public static void main(String[] args) { Image image = new Image("file:src/main/resources/images/myImage.png"); // 使用image对象 } } -
图片路径:在上面的代码中,file:前缀表示图片路径是相对于当前文件系统的,如果你将图片放在资源文件夹中,你可以省略file:前缀。

使用ImageView类
-
引入图片:与第一种方法相同,将图片放在资源文件夹中。
-
加载图片并显示:使用ImageView类加载图片,并将其添加到场景中,以下是一个示例代码:
import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage primaryStage) { Image image = new Image("file:src/main/resources/images/myImage.png"); ImageView imageView = new ImageView(image); imageView.setFitWidth(100); imageView.setFitHeight(100); StackPane root = new StackPane(); root.getChildren().add(imageView); Scene scene = new Scene(root, 300, 250); primaryStage.setTitle("JavaFX Image Example"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } }
-
引入图片:与前面两种方法相同。
-
加载图片并显示:使用ImagePane类加载图片,并将其添加到场景中,以下是一个示例代码:
import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.Pane; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage primaryStage) { Image image = new Image("file:src/main/resources/images/myImage.png"); ImageView imageView = new ImageView(image); imageView.setFitWidth(100); imageView.setFitHeight(100); Pane root = new Pane(); root.getChildren().add(imageView); Scene scene = new Scene(root, 300, 250); primaryStage.setTitle("JavaFX Image Example"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } } -
引入图片:与前面三种方法相同。
-
加载图片并显示:使用ImageLoader类加载图片,并将其添加到场景中,以下是一个示例代码:
import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.Pane; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage primaryStage) { Image image = new Image("file:src/main/resources/images/myImage.png"); ImageView imageView = new ImageView(image); imageView.setFitWidth(100); imageView.setFitHeight(100); Pane root = new Pane(); root.getChildren().add(imageView); Scene scene = new Scene(root, 300, 250); primaryStage.setTitle("JavaFX Image Example"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } }
使用ImagePane类
使用ImageLoader类
| 方法 | 优点 | 缺点 |
|---|---|---|
| 使用Image类 | 简单易用 | 功能有限 |
| 使用ImageView类 | 功能强大,可以调整图片大小和位置 | 代码较多 |
| 使用ImagePane类 | 功能强大,可以调整图片大小和位置 | 代码较多 |
| 使用ImageLoader类 | 功能强大,可以调整图片大小和位置 | 代码较多 |
FAQs
Q1:JavaFX中如何将图片设置为背景?
A1: 你可以使用Background类将图片设置为背景,以下是一个示例代码:
import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.layout.Background; import javafx.scene.layout.BackgroundFill; import javafx.scene.layout.StackPane; import javafx.scene.paint.Color; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage primaryStage) { Image image = new Image("file:src/main/resources/images/myImage.png"); Background background = new Background(new BackgroundFill(image, null, null)); StackPane root = new StackPane(); root.setBackground(background); Scene scene = new Scene(root, 300, 250); primaryStage.setTitle("JavaFX Image Background Example"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } }
Q2:JavaFX中如何将图片设置为按钮的图标?
A2: 你可以使用Button类的setGraphic方法将图片设置为按钮的图标,以下是一个示例代码:
import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage primaryStage) { Image image = new Image("file:src/main/resources/images/myImage.png"); ImageView imageView = new ImageView(image); imageView.setFitWidth(24); imageView.setFitHeight(24); Button button = new Button(); button.setGraphic(imageView); button.setText("Click Me"); StackPane root = new StackPane(); root.getChildren().add(button); Scene scene = new Scene(root, 300, 250); primaryStage.setTitle("JavaFX Image Button Example"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } }