自定义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
相关文章:
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
如何通过西部数码建站助手快速创建专业网站?
如何选择建站程序?包含哪些必备功能与类型?
高防服务器:AI智能防御DDoS攻击与数据安全保障
如何快速搭建高效WAP手机网站吸引移动用户?
如何选购建站域名与空间?自助平台全解析
建站主机与虚拟主机有何区别?如何选择最优方案?
如何通过PHP快速构建高效问答网站功能?
制作旅游网站html,怎样注册旅游网站?
招商网站制作流程,网站招商广告语?
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
网站制作的步骤包括,正确网址格式怎么写?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
代刷网站制作软件,别人代刷火车票靠谱吗?
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
如何快速搭建二级域名独立网站?
营销式网站制作方案,销售哪个网站招聘效果最好?
学校为何禁止电信移动建设网站?
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
太原网站制作公司有哪些,网约车营运证查询官网?
如何在Golang中指定模块版本_使用go.mod控制版本号
javascript基本数据类型及类型检测常用方法小结
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
建站主机服务器选型指南与性能优化方案解析
测试制作网站有哪些,测试性取向的权威测试或者网站?
Swift开发中switch语句值绑定模式
视频网站制作教程,怎么样制作优酷网的小视频?
相册网站制作软件,图片上的网址怎么复制?
python的本地网站制作,如何创建本地站点?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
如何解决VPS建站LNMP环境配置常见问题?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
如何选择靠谱的建站公司加盟品牌?
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
如何选择CMS系统实现快速建站与SEO优化?
网站制作网站,深圳做网站哪家比较好?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
如何通过建站之星自助学习解决操作问题?
重庆网站制作公司哪家好,重庆中考招生办官方网站?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
网站制作说明怎么写,简述网页设计的流程并说明原因?
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
太平洋网站制作公司,网络用语太平洋是什么意思?
智能起名网站制作软件有哪些,制作logo的软件?
如何选择可靠的免备案建站服务器?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
如何规划企业建站流程的关键步骤?
微课制作网站有哪些,微课网怎么进?
*请认真填写需求信息,我们会在24小时内与您取得联系。