自定义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
相关文章:
学校免费自助建站系统:智能生成+拖拽设计+多端适配
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
如何在服务器上配置二级域名建站?
如何通过VPS建站无需域名直接访问?
宝塔面板如何快速创建新站点?
家具网站制作软件,家具厂怎么跑业务?
如何通过远程VPS快速搭建个人网站?
音乐网站服务器如何优化API响应速度?
建站之星在线客服如何快速接入解答?
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
大连网站制作公司哪家好一点,大连买房网站哪个好?
如何在Windows虚拟主机上快速搭建网站?
如何挑选最适合建站的高性能VPS主机?
如何在阿里云高效完成企业建站全流程?
大型企业网站制作流程,做网站需要注册公司吗?
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
为什么Go需要go mod文件_Go go mod文件作用说明
高性能网站服务器部署指南:稳定运行与安全配置优化方案
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
沈阳制作网站公司排名,沈阳装饰协会官方网站?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
建站与域名管理如何高效结合?
网站制作网站,深圳做网站哪家比较好?
专业网站建设制作报价,网页设计制作要考什么证?
建站之星如何助力网站排名飙升?揭秘高效技巧
内部网站制作流程,如何建立公司内部网站?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
如何通过FTP服务器快速搭建网站?
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
,网站推广常用方法?
重庆网站制作公司哪家好,重庆中考招生办官方网站?
如何通过虚拟主机空间快速建站?
如何获取上海专业网站定制建站电话?
如何用wdcp快速搭建高效网站?
,如何利用word制作宣传手册?
如何通过虚拟机搭建网站?详细步骤解析
大学网站设计制作软件有哪些,如何将网站制作成自己app?
建站之星如何一键生成手机站?
如何选择网络建站服务器?高效建站必看指南
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
如何通过NAT技术实现内网高效建站?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
已有域名能否直接搭建网站?
如何通过建站之星自助学习解决操作问题?
如何零基础开发自助建站系统?完整教程解析
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
*请认真填写需求信息,我们会在24小时内与您取得联系。