• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
火磷
Memory will fade,but not notes.
博客园    首页    新随笔    联系   管理    订阅  订阅
JFrame背景

1.引言

在了解了JFrame面板的相关知识后,我们可以选择在RootPane根面板或LayeredPane面板中设置背景图案。

2.方法

对于大小固定的窗口背景设置如下:

 1      //导入图案
 2 
 3      ImageIcon img = new ImageIcon("image url");   
 4 
 5      // 图片缩放为窗口大小
 6 
 7      Image image = img.getImage().getScaledInstance(frame.getWidth(), frame.getHeight(), Image.SCALE_FAST);
 8 
 9      //将缩放好的图片实例化
10 
11      ImageIcon newimg = new ImageIcon(image);
12 
13      //将图案放入标签(不能直接将image放入标签)
14 
15      JLabel imgLabel = new JLabel();
16 
17      imgLabel.setIcon(newimg);
18 
19      //设置标签位置和大小(覆盖面板)
20 
21      imgLabel.setBounds(0, 0,  frame.getWidth(), frame.getHeight());
22 
23      //将标签添加到Layered面板或RootPane面板( LayeredPane也有若干层,这里放在最底层)
24 
25      frame.getLayeredPane().add( imgLabel, new Integer(Integer.MIN_VALUE));
26 
27      //将ContentPane设置为透明
28 
29     JPanel content=(JPanel) frame.getContentPane();
30 
31     content.setOpaque(false);

3.实例

 1 import java.awt.Image;
 2 import javax.swing.ImageIcon;
 3 import javax.swing.JFrame;
 4 import javax.swing.JLabel;
 5 import javax.swing.JPanel;
 6 public class SetBack1 {
 7     JFrame frame = new JFrame("picture test");
 8     JLabel label=new JLabel();   
 9     public SetBack1(){
10         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
11         frame.setSize(500, 400);    
12         //导入图片
13         ImageIcon img = new ImageIcon("D:\\7.jpg");
14         // 图片缩放为适合Frame大小
15         Image image = img.getImage().getScaledInstance(frame.getWidth(), frame.getHeight(), Image.SCALE_FAST); 
16         //将缩放好的图片实例化
17         ImageIcon newimg = new ImageIcon(image);
18         //在标签中添加图片
19         label.setIcon(newimg);
20         //设置标签大小为全屏
21         label.setBounds(0, 0, frame.getWidth(), frame.getHeight());        
22         //LayeredPane也是分层的,这里将JLabel放置在了LayeredPane最底层
23         frame.getLayeredPane().add( label, new Integer(Integer.MIN_VALUE));
24         //将ContentPane透明化
25         JPanel cp= (JPanel)  frame.getContentPane();            
26         cp.setOpaque(false);
27         frame.setVisible(true);
28     }    
29     public static void main(String[] args) {
30         new SetBack1();
31     }
32 }

效果如下:

posted on 2015-08-16 11:37  火磷  阅读(632)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3