java背景图⽚⾃适应_java背景图⽚随窗⼝⼤⼩变化进⾏⾃动缩
放及平铺学步园...
最近⼀直被这个问题困扰这,上⽹也搜了不少这⽅⾯的知识,发现很多⼈都说⽤reapint⽅法(很简单的)进⾏图⽚重绘就OK了(没源码),于是乎⾄今也没实现
但通过⾃⼰的摸索也确实学到了不少东东滴!
在看代码前你⾸先需要了解的内容:(说明下我这⾥是⽤JLabel进⾏加载图⽚的)
1、为窗⼝设⽴,这样当窗⼝变化时,你才有机会调整背景图⽚⼤⼩。
2、背景图⽚的⾃动缩放,是图⽚本⾝⼤⼩的改变,所以要操作的是图⽚,⽽不是JLabel;
3、JLabel的⼤⼩千万别忘了设置,也就是添加背景图⽚的容器,否则是实现不了这个效果滴
下⾯是我⾃⼰的两种⽅法,希望对你有帮助!(为了节省空间两种⽅法写在同⼀代码,嘿嘿)
package org.zhangming.swing;
import java.awt.Graphics;
import java.awt.Image;
html frameimport java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.ImageIcon;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class TestJDesktopPane
{
JFrame frame;
JDesktopPane desktopPane;
JLabel backLabel;
ImageIcon icon;
Graphics g;
Image image;
public TestJDesktopPane()
{
frame = new JFrame("主⾯板");
desktopPane = new JDesktopPane();//虚拟桌⾯
backLabel = new JLabel();//背景图标
//icon = new ImageIcon("e:/Tulips.jpg");
frame.setBounds(0,0,800,600);
frame.addComponentListener(new ComponentAdapter(){//为主⾯板添加窗⼝
@Override
public void componentResized(ComponentEvent e)
{
//利⽤java代码进⾏实现
//icon.Image().Width(),Height(),Image.SCALE_DEFAULT)); //backLabel.setIcon(icon);
backLabel.Width(),Height());
//利⽤Html格式实现
backLabel.setText("
");
}
});
desktopPane.add(backLabel,new Integer(Integer.MIN_VALUE));
frame.add(desktopPane);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String[] args)
{
new TestJDesktopPane();
}
}
第⼀种是html格式的,其实html在JLabel中的应⽤还是很⼴的,⽐如设置字体⼤⼩,颜⾊,格式等,都可以的。
第⼆中就是java swing类型的,你只需要将注释部分打开,并将
//利⽤Html格式实现
backLabel.setText("
");
这部分注释掉就可以看到效果了;
上⾯都是关于图⽚的伸缩问题,下⾯介绍下背景图⽚的平铺吧(这个是我在调试上⾯程序时发现奥)
如果你想看到效果只需将
backLabel.setIcon(icon);
这句代码的注释打开就可以看到结果了
,亲,如果你有更好的⽅法,希望分享下啊

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。