全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

JAVA GUI自定义JPanel画板背景

自定义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小时内与您取得联系。