自定义JPanel面板背景

一、前言
1.GUI全称是Graphical User Interface,就是图形用户界面。JAVA的GUI应用广泛在我们生活中也很常见。很多应用使用该GUI编程设计,像点击QQ图标弹出对应的登录窗体。
一般程序与用户的交互都基于对应程序的运行界面。
2.JPanel面板是SWING下的一个面板容器类。该面板支持嵌套,可设置布局方式,设置不同的布局管理器可添加其他控件像JButton按钮,JTextField文本框等。来设计完善一个程序界面窗体。
作为绘制面板支持setBackground()设置背景颜色的方法还远远不够。这里实现自定义为JPanel设置图片背景。
二、平台工具
1.MyEclipse
此处演示使用myeclipse2014
其他支持java awt+swing平台也可
三、图文展示
1.同一窗体下做不同处理JPanel的效果
(1)首先创建一个不加修饰的窗体,一般的普通默认jpanel界面效果如下:
(2)简单的设置背景颜色效果:
(3)自定义处理后的JPanel下的窗体效果:
2.代码实现
自定义JPanel背景处理,该图片为bg.PNG,与测试类在同一路径下,使用图片注意使用相对路径
import java.awt.Graphics;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class GUITest {
private static JFrame jframe; //声明一个窗体
private JPanel jpanel; //声明一个画板
public GUITest(){ //构造方法
jframe = new JFrame();
init();
}
private void init(){
jframe.setTitle("测试");
jpanel = new JPanel(){//关键代码,就是重写了paint的一个方法
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
ImageIcon img = new ImageIcon(GUITest.class.getResource("bg.png"));
/**
* bg.PNG这个地方换成自己的图片
* 此处使用的相对路径,bg.png跟该测试类在同一路径下
* 不过建议使用相对路径避免使用绝对路径
*/
img.paintIcon(this, g, 0, 0);
}
};
jpanel.setOpaque(true);
jframe.setBounds(200, 200, 500, 400); //设置显示位置距离左边200像素距离上边200像素及屏幕大小500*400
jframe.add(jpanel); //添加画板到窗体
jframe.setVisible(true); //设置显示界面
}
public static void main(String[] args) {
new GUITest(); // 实例化对象
}
}
四、拓展布局管理器
下面简单写个登录窗体:
基于自定义的JPanel背景,设置GridBagLayout布局,添加按钮文本框等基本控件实现的一个简单登录窗体。
(1)代码如下:
import java.awt.Graphics;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class GUIT {
//声明窗体,面板及控件
private static JFrame jframe;
private JLabel jlabel,jlabel1;
private GridBagLayout gridbag;
private GridBagConstraints constraints;
private JTextField jtfield1;
private JPasswordField jpfield1;
private JButton jbutton1,jbutton2,jbutton3;
private JPanel jpanel;
public GUIT(){
jframe = new JFrame();
jlabel = new JLabel();
jlabel1 = new JLabel();
jtfield1 = new JTextField();
jpfield1 = new JPasswordField();
gridbag = new GridBagLayout();
jbutton1 = new JButton();
jbutton2 = new JButton();
jbutton3 = new JButton();
init();
}
/**
* init()初始化并显示界面
*/
private void init(){
jframe.setTitle("登录");
/**
* 设置JPanel背景
*/
jpanel = new JPanel(){
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
ImageIcon img = new ImageIcon(GUITest.class.getResource("ddmbg.jpg"));
img.paintIcon(this, g, 0, 0);
}
};
//为JLabel,JButton初始化文本
jlabel.setText("用户名:");
jlabel1.setText("密 码:");
jbutton1.setText("登录");
jbutton2.setText("退出");
jbutton3.setText("注册");
//设置显示位置及屏幕大小500*400
jframe.setBounds(450, 240, 400, 240);
//jpanel采用GridBagLayout布局管理器
jpanel.setOpaque(false);
jpanel.setLayout(gridbag);
//初始化用户名label,并添加该控件到画板
constraints = getGridBagConstraints(0,0,1,1,0,0,GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(10,0,10,0),0,0);
gridbag.setConstraints(jlabel, constraints);
jpanel.add(jlabel);
//初始化用户名文本框,并添加该组件到画板
constraints = getGridBagConstraints(1,0,1,1,0,0,GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(10,0,10,0),100,0);
gridbag.setConstraints(jtfield1, constraints);
jpanel.add(jtfield1);
//初始化密码label
constraints = getGridBagConstraints(0,1,1,1,0,0,GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(10,0,10,0),0,0);
gridbag.setConstraints(jlabel1, constraints);
jpanel.add(jlabel1);
//初始化密码文本框
constraints = getGridBagConstraints(1,1,1,1,0,0,GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(10,0,10,0),100,0);
gridbag.setConstraints(jpfield1, constraints);
jpanel.add(jpfield1);
//初始化注册按钮,并添加该控件到画板
constraints = getGridBagConstraints(0,2,1,1,0,0,GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(10,0,10,0),0,0);
gridbag.setConstraints(jbutton3, constraints);
jpanel.add(jbutton3);
//初始化登录按钮
constraints = getGridBagConstraints(1,2,1,1,0,0,GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(10,0,10,0),0,0);
gridbag.setConstraints(jbutton1, constraints);
jpanel.add(jbutton1);
//初始化退出按钮
constraints = getGridBagConstraints(2,2,1,1,0,0,GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(10,0,10,0),0,0);
gridbag.setConstraints(jbutton2, constraints);
jpanel.add(jbutton2);
//添加画板到窗体
jframe.add(jpanel);
//窗体初始化完成
}
private static GridBagConstraints getGridBagConstraints(int gridx,int gridy,int gridwidth,int gridheight,double weightx,double weighty,int anchor,int fill,Insets insets,int ipadx,int ipady){
return new GridBagConstraints(gridx, gridy, gridwidth, gridheight, weightx, weighty, anchor, fill, insets, ipadx, ipady);
}
public static void main(String[] args) {
new GUIT();
jframe.setVisible(true);
}
}
其中ddmbg为图片名
(2)实现效果如图所示:
GUI设计中布局是基础也是十分重要的知识。
熟练使用掌握三大布局及其他布局管理器需要自己敲代码练习了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# JAVA自定义JPanel画板背景
# JAVA自定义画板背景
# JPanel画板背景
# java基于GUI实现简单画笔小画板
# Java定义画板类的方法
# 用Java实现简单画板功能
# Java实现简单画画画板
# Java Swing实现画板的简单操作
# Java版画板的实现方法
# Java实现简单小画板
# 自定义
# 管理器
# 文本框
# 自己的
# 三大
# 也可
# 在同一
# 也很
# 弹出
# 写了
# 不加
# 创建一个
# 大家多多
# 如图所示
# 及其他
# 生活中
# PNG
# bg
# anchor
# fill
相关文章:
定制建站哪家更专业可靠?推荐榜单揭晓
建站之星如何取消后台验证码生成?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
黑客如何通过漏洞一步步攻陷网站服务器?
建站主机核心功能解析:服务器选择与网站搭建流程指南
用v-html解决Vue.js渲染中html标签不被解析的问题
建站主机类型有哪些?如何正确选型
微信推文制作网站有哪些,怎么做微信推文,急?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
c++怎么用jemalloc c++替换默认内存分配器【性能】
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
如何选择适合PHP云建站的开源框架?
建站之星后台搭建步骤解析:模板选择与产品管理实操指南
,交易猫的商品怎么发布到网站上去?
制作网站怎么制作,*游戏网站怎么搭建?
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
建站之星24小时客服电话如何获取?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
如何用PHP工具快速搭建高效网站?
建站之星后台密码遗忘或太弱?如何重置与强化?
如何通过VPS建站实现广告与增值服务盈利?
自助网站制作软件,个人如何自助建网站?
建站主机系统SEO优化与智能配置核心关键词操作指南
如何在云主机上快速搭建多站点网站?
css网站制作参考文献有哪些,易聊怎么注册?
C#如何序列化对象为XML XmlSerializer用法
常州自助建站工具推荐:低成本搭建与模板选择技巧
如何在搬瓦工VPS快速搭建网站?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
高防服务器租用指南:配置选择与快速部署攻略
制作网站的基本流程,设计网站的软件是什么?
c# 在高并发场景下,委托和接口调用的性能对比
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
广州美橙建站如何快速搭建多端合一网站?
,巨量百应是干嘛的?
济南网站制作的价格,历城一职专官方网站?
临沂网站制作企业,临沂第三中学官方网站?
网页设计与网站制作内容,怎样注册网站?
浅析上传头像示例及其注意事项
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
定制建站价位费用解析与套餐推荐全攻略
大连网站制作公司哪家好一点,大连买房网站哪个好?
淘宝制作网站有哪些,淘宝网官网主页?
如何通过老薛主机一键快速建站?
定制建站流程解析:需求评估与SEO优化功能开发指南
网站按钮制作软件,如何实现网页中按钮的自动点击?
网站制作价目表怎么做,珍爱网婚介费用多少?
如何快速搭建安全的FTP站点?
表情包在线制作网站免费,表情包怎么弄?
*请认真填写需求信息,我们会在24小时内与您取得联系。