首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDesktopPane的背景设置

JDesktopPane的背景设置
EN

Stack Overflow用户
提问于 2010-05-25 23:24:59
回答 3查看 5K关注 0票数 1

我正在为一个JDesktopPane使用一个自制的DesktopPaneUI,我已经为这个类编写了适当的方法,但是我遇到了麻烦。当我调整JDesktopPane的大小时,背景图像没有随框架调整大小。图像似乎以最初打开窗口时的大小进行了裁剪。我给它一个比窗口更大的图像,但我仍然有这个问题。

下面是我在desktopUI类的构造函数中的方法调用。

代码语言:javascript
复制
super();
this.background = javax.imageio.ImageIO.read(new File(fileName));

有没有一种方法可以改变我设置UI的主类,或者当JDesktopPane改变大小时背景仍然充满窗口的myDesktopPaneUI类?

代码语言:javascript
复制
setUI(new myDesktopPaneUI("media/bg.jpg"));
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-25 23:43:19

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

代码语言:javascript
复制
@Override
public void paint(Graphics g, JComponent c) {
    g.drawImage(image, 0, 0, c.getWidth(), c.getHeight(), null);
}
票数 6
EN

Stack Overflow用户

发布于 2010-05-26 00:01:12

如果您只创建自定义UI来添加背景图像,更简单的方法是对JDesktopPane进行自定义绘制,以便它适用于所有的LAF:

代码语言:javascript
复制
JDesktopPane desktop = new JDesktopPane()
{
    protected void paintComponent(Graphics g)
    {
        g.drawImage(image, 0, 0, getWidth(), getHeight(), null);
    }

};

通常,您会首先调用super.paintComponent(g),但由于图像将覆盖整个背景,因此不需要这样做。

票数 4
EN

Stack Overflow用户

发布于 2011-11-20 01:56:45

使用组件侦听器了解窗口何时调整大小,然后使用

代码语言:javascript
复制
image.getScaledInstance(getWidth(), getHeight(), 0);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2906050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档