java 如何添加背景图片
在 Swing 中添加背景图片
使用 JPanel 重写 paintComponent 方法绘制背景图片。确保在构造函数中加载图片资源,并通过 Graphics 对象绘制。

import javax.swing.*;
import java.awt.*;
public class BackgroundPanel extends JPanel {
private Image backgroundImage;
public BackgroundPanel(String imagePath) {
try {
backgroundImage = new ImageIcon(imagePath).getImage();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (backgroundImage != null) {
g.drawImage(backgroundImage, 0, 0, getWidth(), getHeight(), this);
}
}
}
在 JavaFX 中添加背景图片
通过 BackgroundImage 类设置场景或布局的背景。需要指定图片路径、填充策略和位置参数。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.scene.image.Image;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundImage;
import javafx.scene.layout.BackgroundPosition;
import javafx.scene.layout.BackgroundRepeat;
import javafx.scene.layout.BackgroundSize;
public class JavaFXBackground extends Application {
@Override
public void start(Stage primaryStage) {
StackPane root = new StackPane();
Image image = new Image("file:background.jpg");
BackgroundImage bgImage = new BackgroundImage(
image,
BackgroundRepeat.NO_REPEAT,
BackgroundRepeat.NO_REPEAT,
BackgroundPosition.CENTER,
new BackgroundSize(100, 100, true, true, true, true)
);
root.setBackground(new Background(bgImage));
Scene scene = new Scene(root, 400, 300);
primaryStage.setScene(scene);
primaryStage.show();
}
}
注意事项
图片路径需使用正确格式。相对路径从项目根目录开始,绝对路径需完整文件系统路径。对于资源文件夹内的图片,使用 getClass().getResource() 加载。
Swing 中确保组件不透明(setOpaque(false)),JavaFX 中调整 BackgroundSize 参数控制缩放行为。大图片可能影响性能,建议提前优化尺寸。







