`
My*Love
  • 浏览: 71258 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

Swing自定义界面背景图片实现

    博客分类:
  • JAVA
阅读更多
  其实对于Swing也用的不是很熟,因为朋友问到才回头搞一下,给窗体设置背景图片还是做过的,但朋友是想实现像Windows自定义桌面那样的功能,能用户自己选择图片设置成界面背景。
   本来是想将图片放到一个JPanel里面,然后通过JPanel里面的paintComponent(Graphics g)方法画出来,这个可以实现静态设置,但动态选择就不行了,真的很无语.....
   在网上找了很多资料,基本上都是前一种方法,后来决定另寻思路,其实设置背景图片用JLabel可以实现,但总感觉效果不好,下面还是记录一下吧。

/**
 * 动态设置窗体背景图片
 */
public class ImageFrame extends JFrame {
	private ImageIcon bgImg;
	private JLabel label;
	private JButton button;
	private static String[] images = intiImages();
	private static int index;

	public ImageFrame() {
		// 默认背景图片
		bgImg = new ImageIcon(images[0]);
		// 将图片显示到label中
		label = new JLabel(bgImg);
		// 标签的大小位置设置为图片刚好填充整个面板
		label.setBounds(0, 0, bgImg.getIconWidth(), bgImg.getIconHeight());
		// 得到窗体的内容面板
		JPanel pane = (JPanel) this.getContentPane();
		// 设置窗体为透明的
		pane.setOpaque(false);
		// 设置布局方式,内容窗格默认的布局管理器为BorderLayout
		pane.setLayout(new FlowLayout());
		button = new JButton("Next");
		pane.add(button);
		// 把背景图片添加到分层窗格的最底层作为背景
		this.getLayeredPane().setLayout(null);
		this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
		// 设置窗体大小,跟图片一样大
		this.setSize(bgImg.getIconWidth(), bgImg.getIconHeight());
		// 窗体居中
		this.setLocationRelativeTo(null);
		// 窗体关闭
		this.setDefaultCloseOperation(3);
		// 窗体不能放大
		this.setResizable(false);
		this.setVisible(true);
		// 点击按钮换成下一张图片
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				index++;
				if (index >= images.length) {
					index = 0;
				}
				bgImg = new ImageIcon(images[index]);
				label.setIcon(bgImg);
				label.setBounds(0, 0, bgImg.getIconWidth(), bgImg
						.getIconHeight());
				//重新设置窗体位置
				setSize(bgImg.getIconWidth(), bgImg.getIconHeight());
				setLocationRelativeTo(null);
			}
		});
	}

	/**
	 * 初始化图片数组
	 * 
	 * @return
	 */
	public static String[] intiImages() {
		String imgUrl = "src/images/";
		String[] images = new String[6];
		for (int i = 0; i < images.length; i++) {
			images[i] = imgUrl + (i + 1) + ".jpg";
		}
		return images;
	}

	public static void main(String args[]) {
		new ImageFrame();
	}
}

  代码就不用多解释了,那个数组里面是放6张图片路径,图片名是以数字开头的,点击Next会把下一张图片作为背景。
   其实实现都很简单,只是没想到更好实现,如果有人有什么更好的想法或实现,希望一起分享。
1
0
分享到:
评论

相关推荐

    JAVA Swing 制作俄罗斯方块小游戏,课设作品(界面优美,功能完善,适合初学者参考学习)

    java Swing制作的俄罗斯方块小游戏,主题切换、背景音乐等完成众多功能。 基本功能:  方块消行  方块控制  随机生成方块  预览下一方块  游戏状态判断  游戏暂停、结束提醒  退出程序提醒  等级...

    Java毕业设计-【项目源码】俄罗斯方块项目GUI_swing(源码+lun文+视频齐全).rar

    2. **图形用户界面(GUI)**:使用Swing库设计了一个简洁美观的游戏界面,包括游戏区域、得分板、下一个方块预览等部分。 3. **游戏音效**:为游戏添加了背景音乐和方块消除、游戏结束等音效,提升了游戏的沉浸感。 ...

    基于 Java的扫雷程序毕业设计

    图形界面: 使用Swing组件库构建用户界面 事件处理: 实现了事件监听器,响应用户的鼠标点击事件 功能亮点: 自定义难度: 玩家可以根据自己的喜好选择不同的游戏难度。 计时功能: 游戏会记录玩家完成游戏的时间,...

    swtUI4:基于swt,jface特殊场景还会集成awt,swing等组件封装为一体化的java桌面应用程序框架,定制自己的界面美化特效,定制自己的升级策略,当内部集成jvm,还可以提供跨平台无jdk的运行程序,希望有兴趣的可以一起维护和扩展,扩展rcp,swt方向在国内市场的应用

    swtUI4基于swt,jface特殊场景还会集成awt,swing等组件封装为一体化的java桌面应用程序...业务背景:切换到不同的网络环境设置繁琐的ip dns很麻烦,用跨平台swt来做,界面可以美化,支持用户自定义,目前只支持颜色

    基于java开发的俄罗斯方块游戏

    在游戏界面中可以自定义对上下移动,变换形状,瞬间下落,暂停,加阴影,修改背景图片,等功能的按键操作习惯。 可以修改Graphics文件里面的图片,自定义自己想要在背景中显示的图片。 运行双击start.bat可以运行 ...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例259 实现带背景图片的窗体 330 实例260 使背景图片自动适应窗体的大小 331 实例261 背景为渐变色的主界面 332 实例262 随机更换窗体背景 334 11.5 窗体形状及应用 335 实例263 椭圆形窗体界面 335 实例264 钻石...

    java源码包---java 源码 大量 实例

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    java源码包2

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    java源码包3

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    JAVA桌面应用开发特效集合

    分享快乐! 十几个很漂亮的桌面应用开发组件或者说实例吧.很不错 MSN风格的拉动条 ...自定义按钮外观 为JTextField添加AutoCompletion功能 菜单特效 Swing专业外观 漂亮的界面设计 面板下雪背景 等等...

    java源码包4

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰效果 Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰效果 Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、...

    JAVA上百实例源码以及开源项目源代码

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    JAVA实验报告

    (二)使用滚动条改变背景颜色 48 (三)Applet 与 Application 合并运行 49 (四)创建电闪雷鸣的动画 50 实验8 流与文件 53 一、实验目的 53 二、实验要求 53 三、实验内容 53 (一)使用标准数据流的应用程序 53 ...

    JAVA上百实例源码以及开源项目

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

Global site tag (gtag.js) - Google Analytics