我正在为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);
}