700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java 背景图片自适应_java 背景图片随窗口大小变化进行自动缩放及平铺 | 学步园...

java 背景图片自适应_java 背景图片随窗口大小变化进行自动缩放及平铺 | 学步园...

时间:2024-04-22 03:49:22

相关推荐

java 背景图片自适应_java  背景图片随窗口大小变化进行自动缩放及平铺 | 学步园...

最近一直被这个问题困扰这,上网也搜了不少这方面的知识,发现很多人都说用reapint方法(很简单的)进行图片重绘就OK了(没源码),于是乎至今也没实现

但通过自己的摸索也确实学到了不少东东滴!

在看代码前你首先需要了解的内容:(说明下我这里是用JLabel进行加载图片的)

1、为窗口设立监听器,这样当窗口变化时,你才有机会调整背景图片大小。

2、背景图片的自动缩放,是图片本身大小的改变,所以要操作的是图片,而不是JLabel;

3、JLabel的大小千万别忘了设置,也就是添加背景图片的容器,否则是实现不了这个效果滴

下面是我自己的两种方法,希望对你有帮助!(为了节省空间两种方法写在同一代码,嘿嘿)

package org.zhangming.swing;

import java.awt.Graphics;

import java.awt.Image;

import java.ponentAdapter;

import java.ponentEvent;

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.setImage(icon.getImage().getScaledInstance(frame.getWidth(),frame.getHeight(),Image.SCALE_DEFAULT));

//backLabel.setIcon(icon);

backLabel.setSize(frame.getWidth(),frame.getHeight());

//利用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);

这句代码的注释打开就可以看到结果了

,亲,如果你有更好的方法,希望分享下啊!!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。