自定义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
相关文章:
如何快速生成专业多端适配建站电话?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
安徽网站建设与外贸建站服务专业定制方案
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
建站10G流量真的够用吗?如何应对访问高峰?
网站制作价目表怎么做,珍爱网婚介费用多少?
股票网站制作软件,网上股票怎么开户?
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
建站主机选虚拟主机还是云服务器更好?
网站制作新手教程,新手建设一个网站需要注意些什么?
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
创业网站制作流程,创业网站可靠吗?
子杰智能建站系统|零代码开发与AI生成SEO优化指南
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
建站之星免费版是否永久可用?
家庭建站与云服务器建站,如何选择更优?
成都响应式网站开发,dw怎么把手机适应页面变成网页?
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
如何快速搭建安全的FTP站点?
如何将凡科建站内容保存为本地文件?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
金*站制作公司有哪些,金华教育集团官网?
制作网站怎么制作,*游戏网站怎么搭建?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
香港服务器部署网站为何提示未备案?
东莞专业制作网站的公司,东莞大学生网的网址是什么?
建站之星如何修改网站生成路径?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
在线制作视频的网站有哪些,电脑如何制作视频短片?
常州企业网站制作公司,全国继续教育网怎么登录?
大连 网站制作,大连天途有线官网?
攀枝花网站建设,攀枝花营业执照网上怎么年审?
建站之星后台搭建步骤解析:模板选择与产品管理实操指南
*服务器网站为何频现安全漏洞?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
大连网站制作公司哪家好一点,大连买房网站哪个好?
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
学校免费自助建站系统:智能生成+拖拽设计+多端适配
宝塔面板创建网站无法访问?如何快速排查修复?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
建站之星安装后界面空白如何解决?
深圳网站制作培训,深圳哪些招聘网站比较好?
南京网站制作费用,南京远驱官方网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。