我正在为JDesktopPane使用自制的DesktopPaneUI,已经为该类编写了正确的方法,并且遇到了麻烦。当我调整JDesktopPane的大小时,背景图像不会随着框架而变化。图像似乎被裁剪为最初打开窗口时的大小。我给它的图像大于窗口,但仍然有此问题。

这是我的desktopUI类的构造函数中的方法调用。

super();
this.background = javax.imageio.ImageIO.read(new File(fileName));


有没有一种方法可以更改设置UI的主类或myDesktopPaneUI类,以使JDesktopPane更改大小时背景仍填充窗口?

setUI(new myDesktopPaneUI("media/bg.jpg"));

最佳答案

覆盖paint()以将图像缩放到窗格大小的方式调用drawImage()

@Override
public void paint(Graphics g, JComponent c) {
    g.drawImage(image, 0, 0, c.getWidth(), c.getHeight(), null);
}

10-06 13:22