将加载的GIF设置为背景

时间:2014-02-22 17:18:14

标签: java swing

情况:我有一个JFrame我已经设法导入GIF并在主面板中显示它,但它会将我的所有其他面板向下移动,导致我的GUI处于混乱状态。

问题:我应该如何将GIF作为背景而不是像我一样添加到主面板?

注意:代码只是制作Jframe,设置详细信息,添加面板然后将GIF显示为Jlabel。如果您需要代码,我可以在下面显示它。

3 个答案:

答案 0 :(得分:2)

有几种方法可以实现这一目标......

你可以......

使用JLabel,将标签的图标属性设置为图像的参考。然后,您可以将布局管理器应用于标签,并将标签设置为其他组件的主容器,只需像往常一样将它们添加到其中......

IconImage image = ...;
JLabel background = new JLabel(image);
background.setLayout(...);
// You could set the frames content pane to the label and keep
// working as per normal, adding components to the frame
setContentPane(background);
// or, simply add components to it directly like any other container
background.add(...);

关于这个的好处是,如果GIF是动画的,它将包含正常播放...好的副作用。退回是,JLabel不会为您调整图像大小...

你可以......

将图像绘制到组件的背景中,如JPanel,然后将剩余的组件添加到组件中。

这将允许您应用特殊效果,或者如果您愿意,可以调整图像大小。如果它是一个动画GIF,那么这会使它变得非常复杂,因为你需要自己动画帧。

看看......

了解更多详情

答案 1 :(得分:1)

更新的答案

现在按照@MadProgrammer正确指出的Oracle Swing UI-guidlines

添加背景的最佳方法是简单地绘制它。创建BackgroundPanel(扩展JPanel)并覆盖paintComponent(...);

public class BgPanel extends JPanel
{ 
    //Overload and paint your background
    public void paintComponent(Graphics g)
    {
        //create image object, or more preferably do that in the BgPanel constructor
        g.drawImage(image, 0, 0, null);
    }
}

根据Oracle使用Swing时的自定义渲染指南。

答案 2 :(得分:0)

你可以在style.css中这样做,这样就可以用于整个身体。

body { background-position: center center; background-image: url('../images/MyGif.gif'); background-repeat: no-repeat; }

或为其创建一个类

.frame{ background-position: center center; background-image: url('../images/MyGif.gif'); background-repeat: no-repeat; }