`
vampire1126
  • 浏览: 87506 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
文章分类
社区版块
存档分类
最新评论

给自己写的界面加背景

阅读更多

     刚学Swing的时候感觉这东西好神奇啊,虽然不能完全按照自己想的把界面画出来,但是进过多番微调的话还是能达到一个满意的效果滴

    给界面加背景是个非常实用的小技术,本人从网上学了个,代码比较少而且简单,在此给那些跟我一样学Swing的小鸟们晒晒,关键是对JPanel里面的paintComponent方法进行重写

    代码代码:

 

import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.GridLayout;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;



public class BackgroundTest {
	public void showUI(){
    	final JFrame frame = new JFrame("背景测试");
    	frame.setSize(400, 500);
    	frame.setLayout(new GridLayout(1,1));
    	
    	//设置背景
    	//你需要的图片,创建为ImageIcon
    	final ImageIcon image = new ImageIcon("D:\\Image_source\\ChatUI.jpg");
    	
    	JPanel panel = new JPanel(){
    		public void paintComponent(Graphics g){
    			/*
    			 * 以下三行分别是:
    			 * 1. 继承原来的方法
    			 * 2. 把图片弄上去
    			 * 3. 把组件设置为透明,让图片显示出来
    			 */
    			super.paintComponent(g);
    			g.drawImage(image.getImage(), 0, 0, null);
    			this.setOpaque(false);
    		}
    	};
    	frame.add(panel);//将panel添加到frame上就ok了
    	
    	//然后再在panel上添加你想要的组件
    	panel.setLayout(new FlowLayout());//要加组件就得先弄个布局器
    	
    	JTextField tField = new JTextField(15);
    	JButton button = new JButton("木哈哈");
    	
    	panel.add(tField);
    	panel.add(button);
    	
    	frame.setVisible(true);
    	frame.setDefaultCloseOperation(3);
    	frame.setLocationRelativeTo(null);
    	
    	frame.setResizable(false);//此处将掩盖此方法的缺陷,见文章后面解说...
	}
    public static void main(String args[]){
    	BackgroundTest t = new BackgroundTest();
    	t.showUI();
    }
}

  

 

然后是运行效果:

 

(由于找不到个理想的支持外链的网床,效果图片就用附件了,要点击才能看到全图.......大家有没有

好的网床推荐个啊) 

 

 

 

下面是此方法的补充说明:

 

1.  frame.setLayout(new GridLayout(1,1))
     之所以用 GridLayout(1,1) 是想让panel充满整个frame,当然也有其他方法,但这个比较简单和直接,反正这个是测试嘛,具体情况再具体分析

 

2.  关于用panel添加背景的那块

     panel new完以后,以前看的上面是用一个JScrollPane来承载panel,经本人实践以后发现不加那几行代码也行,但如果你设置的组件要超出frame的显示范围的话那你就要加了

 

3.  frame.setResizable(false)

     这个语句比较重要,你丫把这行注释掉,然后再把界面最大化吧,让你看看“金玉其外,败絮其中”的悲剧现场,呵呵

这条语句就是强制把你技术上的不足给弥补掉,直接让别人不能最大化,蛮无耻的,呵呵,不过对于初学者很实用。

 

4.  this.setOpaque(false)

     这是让组件透明的方法,既然是做背景,那么一定不希望后来加的大范围组件把背景给掩盖掉,比如你要在上面再添加panel,如果直接加的话那么新的panel就会把一部分背景盖掉,这时就需要调用setOpaque方法。另外在补充一下,如果要添加一个带滚动条的JtextArea的话,就要把JScrollPane那边也透明,即加上如下两行代码:

   scroll.setOpaque(false);

   scroll.getViewport().setOpaque(false);

 

OK,就写到这里吧,希望能帮上你些忙

有不懂的地方或者有改进的方法就“跪求你留言”撒,木哈哈

  • 大小: 67.4 KB
2
2
分享到:
评论

相关推荐

    Qt5背景设置方式

    QT5写的设置背景图片和颜色的方法,对初学者很有用,高手没参考价值。

    LayeredSkin c# 动画 界面 3D

    支持一部分带有Paint事件的普通控件,但是不能实现普通控件的背景透明效果! 控件类:Controls HotKey:支持全局热键绑定,事件驱动,可以开启和关闭 LayeredButton:按钮控件,支持按钮颜色设置,图片按钮,...

    VC6风格界面

    ...................\在对话框上加超链接.doc ...................\在类VC的界面实现中加入目录树.doc ...................\在视图中同步显示鼠标的位置.doc ...................\如何创建一个不规则形状的窗口....

    带密码日记本.zip

    进入"写日记"界面即可写日记并且可以选择当天天气情况,写完日记以后不需要其他操作直接点返回键就可以自动保存内容并回到主界面。进入"查看日记"界面即可查看写过的日记,若没有写过日记,则提示用户写日记。进入...

    Android应用源码不错的带密码日记本项目

    进入”写日记”界面即可写日记并且可以选择当天天气情况,写完日记以后不需要其他操作直接点返回键就可以自动保存内容并回到主界面。进入”查看日记”界面即可查看写过的日记,若没有写过日记,则提示用户写日记。...

    C# WinForm 利用NPOI 自定义[表头|列表|表尾]设计导出Execl格式源码【原创】【可直接运行】

    C# WinForm 工作中遇到一个需要将界面表格数据按照设定的格式[表头|列表|表尾]导出到Excel文件,因为格式繁多一个个固定代码编写很不现实,网上找了很久都没有相关的功能实例,于是就加班自己动手写了一个通用的导出...

    au3桌面壁纸工具(天气获取、图标排列、图标背景)By nmgwddj

    6:附带工具中可根据用户自定义排列好的桌面图标位置获取坐标保存配置文件,给其他机器调用规划桌面图标位置。(部分源代码出自acn论坛) 大致的功能就这么多,核心代码可以在acn论坛找到作者benkel的部分代码,...

    基于可视化界面(awt/swing)的横板过关类小游戏

    还有包括自己调试时加的’j’、’z’、’+/=’、’-’所分别代表的unattack态,跳跃初速度加10,进入下一关,回到上一关,并且设计了各种道具(包括恢复生命的红心,获得uattack状态的五角星和提升跳跃的能量球),...

    人工智能 猴子摘香蕉

    猴子摘香蕉 源码 人工智能课程作业 界面写的还不错 用的状态空间法

    LayeredSkinDemo c# 界面 动画

    支持一部分带有Paint事件的普通控件,但是不能实现普通控件的背景透明效果! 控件类:Controls HotKey:支持全局热键绑定,事件驱动,可以开启和关闭 LayeredButton:按钮控件,支持按钮颜色设置,图片按钮,...

    飞机大战 https://blog.csdn.net/fqfq123456/article/details/127113824

    我们依旧能记得抱个老人机娱乐的场景,这篇文章主要给大家介绍了关于如何利用python,pgzrun写一个简单的飞机大战小游戏的相关一步步实现的资料,以后想把英语 单词的学习能加进来,先实现不带单词的功能,需要的朋友...

    RPG Maker MV插件编程实例教程

    1. 给各个菜单界面添加背景 2. 让背景滚动起来 3. 在主菜单界面增加自定义菜单:改名 4. 在主菜单界面移除菜单命令 5. 在主菜单界面增加一个自定义窗口 【实例教程4】玩转标题画面 1. 美化游戏标题 2. 让背景动...

    基于MATLAB中的GUI设计的钢琴界面设计并能发声

    MATLAB的GUI的操作其他人写的很清楚了,在此不再赘述。 MATLAB的GUI的基本操作可见:GUI基本操作 这次所设计的钢琴有简单的七个琴键,DO RE MI FA SO LA XI 首先在命令行中输入 guide 即可调出gui设计页面,选择第...

    [详细完整版]案件管理系统.doc

    五、项目需求书 1.项目背景:为进一步提升纪检... " " " " " "拍照保存后,自动跳转到签呈拟写界面 " " " " " "。 " " " " " "案件受理岗位在此界面拟写签呈内容, " " " " " "保存后根据保存时间自动生成签呈,推 "

    JAVA 实现《布谷鸟闯关-升级版》游戏-全部源码

    # 主要设计 1. 设计游戏界面,用swing实现 2. 设计背景 3. 设计移动墙 4. 设计布谷鸟 5. 设计障碍物 ...6. 设计背景音乐和音效 ...需要技术指导,写项目程序,等更多服务请加微信xiaoxuzhu01联系博主

    iApp源码高仿某Q音个人中心UI

    App源码高仿某Q音个人中心UI,仿一下...把数据渲染上去 再加个可修改背景,简直不要太完美 底下的 列表内容没有写 毕竟每个人的内容需求都是不一样的 无病毒、无后门、无任何联系方式 感兴趣了解一下 源码仅供参考学习

    任务一(创新小组19届安卓方向)

    界面不要拖控件,要去xml文件里写出来 背景图自己找图片加。 可以看这个创建drawable文件夹 源码 public class MainActivity extends AppCompatActivity { //定义控件 private Button btn_send; priv

    一款带壁纸的自定义Android日历app以及源代码

    ③ 背景图均为精心挑选,每张图的景色都代表特定的月份,经过后期的蒙版和加月份水印处理,背景图对日期文字的干扰显著降低。客户既可迅速查看到相应的日期,又可欣赏背景图,达到了预期的效果; ④ 对于日程处理...

    批量添加水印(TSRWatermarkImageSoftware) v2.1.32绿色版.rar

    °角你使用的文字为您的照片水印 ·数字图像中插入,图片,照片的背景水印 ·调整图像,而水印的图像/照片 ·您的照片使用水印或其他图像,照片或图片 ·水印照片使用的颜色和样式,你想自己的文字。 ·保持在目标...

    神笔马良强制码字软件2.0版-神笔马良软件唯一正版-进小黑屋写文字

    增加界面配置菜单,能随自己喜好改变编辑器背景、字体大小、软件界面。 重新制作搜索、替换菜单,使用更方便。 设计制作浏览器菜单窗口,并且限制了只能浏览百度,方便及时查找资料。 重新设计制作软件短消息...

Global site tag (gtag.js) - Google Analytics