`
vampire1126
  • 浏览: 88050 次
  • 性别: 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
分享到:
评论

相关推荐

    纯C语言写计算器界面源码

    在计算器项目中,开发者可能使用了GDI的函数如`CreateWindow`来创建窗口,`CreateSolidBrush`和`FillRect`来填充背景,`TextOut`用于显示数字和运算符,以及`MoveToEx`和`LineTo`来绘制按钮边框。这些函数的组合使用...

    QQ 登录界面 Qt实现

    在该类中,我们可以定义登录界面的大小、位置以及背景色等属性。接着,通过QLayout管理器(如QVBoxLayout或QHBoxLayout)来布置登录界面的元素,如账号输入框、密码输入框、登录按钮等。这些元素可以通过setGeometry...

    用PB编写的登陆界面

    在描述中提到“界面很新颖,具有诱惑力”,这可能意味着该登录界面的设计不仅满足了基本的用户认证功能,还考虑到了用户体验和视觉吸引力。通常,一个吸引人的登录界面会包含精心设计的图形元素、合理的布局以及友好...

    winform界面特效470例

    此外,还介绍了一些用户交互特效,例如随机更换主界面背景、自动启动的多媒体光盘程序、触摸屏程序添加虚拟键盘、半透明渐显窗体等,这些特效不仅美化了界面,还增强了程序的交互性和用户体验。 书中的实例也涉及到...

    QT做的界面登录系统,能实现登录和注册 可显示图片

    这在登录界面中可以作为背景图像或者图标,提升界面的视觉效果。 在实现这个项目时,开发者还需要考虑错误处理和用户体验。例如,当输入错误时,提供清晰的错误提示;在登录失败时,可以提供“记住我”或“自动登录...

    电脑硬盘加播背景小软件

    总结来说,"电脑硬盘加播背景小软件"是一款专注于硬盘界面美化的小工具,通过提供自定义背景、动态效果和各种主题,为用户带来更赏心悦目的使用体验。其网吧专用版则针对特定场景进行了优化,满足了公共场所对软件...

    androidQQ登陆界面

    - `Button`用于登录操作,可以设置自定义背景和文字样式以匹配QQ的风格。 - 其他元素如“忘记密码”和“新用户注册”可以是链接形式的`TextView`,点击后跳转到相应页面。 - 使用`ConstraintLayout`或`...

    易语言实现登录注册美化界面

    这可能涉及到背景图片、字体样式、颜色搭配以及控件边框和阴影效果的调整。 7. **代码结构**:保持代码简单易懂是编程的基本原则,模块化编程能帮助我们更好地组织代码,提高可读性和维护性。将登录、注册等功能...

    含有登陆界面的Java聊天程序功能源代码,下载即可使用!

    “背景图片”可能是为了增强用户界面的美观度,开发者可能使用了Java的图像处理API,如`java.awt.image.BufferedImage`来加载和显示图片。这可能涉及到资源管理,比如如何将图片资源加载到内存中,并在适当的时候...

    弹出提示框,背景压暗蒙版

    "蒙版"在这里指的是覆盖在原始界面之上,用于遮挡部分或全部背景的图形元素。在弹出提示框的应用中,蒙版通常是全屏的灰色背景,它的主要作用是为弹出框创建一个隔离的视觉区域,增加提示框的视觉冲击力,并帮助用户...

    WPF使用InkCanves实现透明背景签名

    首先,我们需要在WPF界面中添加InkCanvas控件。在XAML代码中,可以这样定义: ```xml ``` 这里的`Background="Transparent"`设置为透明背景,使得签名不会带有任何颜色,方便后续集成到其他文档中。 当用户在...

    易语言视频播放器界面

    在自绘的视频播放器界面中,GDI+被用来绘制窗口背景、播放控件图标以及其他视觉元素,以达到高仿迅雷看看的外观。通过GDI+,开发者可以精确地控制颜色、线条、形状等视觉元素,创建出美观且响应迅速的界面。 综上所...

    数据库管理系统设计的背景说明

    ### 数据库管理系统设计的背景说明 #### 一、企业概况 **1.1 当前企业的规模** - **规模概述**:企业在设计数据库管理系统时需首先考虑企业的规模,这包括员工数量、分支机构的数量以及企业的年营业额等关键指标。...

    java二进制转化界面

    1. **用户友好性**:界面应该直观且易于使用,即使对于非技术背景的用户也能轻松上手。这可能包括简单的拖放功能,清晰的按钮和状态指示器。 2. **功能多样性**:除了基本的二进制读写功能外,还应支持多种格式的...

    ios背景音乐 加按键音乐特效

    在iOS开发中,实现“ios背景音乐 加按键音乐特效”涉及到多个技术点,包括音频播放、用户交互以及UI设计。以下是对这些知识点的详细说明: 1. **iOS音频播放** - **AVFoundation框架**:在iOS中,我们通常使用...

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

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

    C# 写的文本编辑器 字体 颜色 加粗 加下滑线等等

    6. **界面设计**:在UI设计中,可以添加工具栏或菜单项,对应各种操作,如字体、颜色、加粗、下划线等。这些元素的点击事件应与上述操作逻辑关联起来。 7. **保存与加载**:为了让用户能保存和加载他们的文本,我们...

    登陆界面的设计登陆界面的设计

    1. WYSIWYG编辑器:可视化编辑界面,让非编程背景的设计师也能轻松创建页面布局。 2. HTML/CSS代码编辑:对于有经验的开发者,可以直接编写和编辑HTML和CSS代码,实现更精细的控制。 3. 模板和库:可以利用预设的...

    jquery颜色选择器设置文字颜色选择器和背景颜色选择器下载

    在网页设计中,jQuery颜色选择器是一个非常实用的工具,它可以帮助...无论是用于文字颜色还是背景颜色的设置,都能带来直观、易用的界面。记得根据实际需求选择合适的颜色选择器插件,并参考插件文档进行定制化配置。

    安卓视频登录界面+NFC读写+服务器连接数据传输

    这种设计通常涉及到Android的多媒体处理,需要使用到VideoView或者ExoPlayer组件来播放背景视频。VideoView是Android SDK内置的视图类,可以用来播放本地或网络视频,而ExoPlayer则是一个更加强大的媒体播放器,支持...

Global site tag (gtag.js) - Google Analytics