java 自定义 jpanel_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设计中布局是基础也是十分重要的知识。
熟练使用掌握三大布局及其他布局管理器需要自己敲代码练习了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持PHP中文网。
更多JAVA GUI自定义JPanel画板背景相关文章请关注PHP中文网!
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
java 自定义 jpanel_JAVA GUI自定义JPanel画板背景相关推荐
- java实现一个gui面板_JAVA GUI自定义JPanel画板背景
自定义JPanel面板背景 一.前言 1.GUI全称是Graphical User Interface,就是图形用户界面.JAVA的GUI应用广泛在我们生活中也很常见.很多应用使用该GUI编程设计,像 ...
- java 刷新jpanel_Java Swing刷新JPanel
我有一个Applet类(扩展 JApplet ) . 在类中,我实例化一个JPanel并初始化一个JButton whit setEnabled(true) . 用户在Panel中单击此按钮并进行一些 ...
- java jpanel添加背景_java – 将背景图像添加到JPanel
我正在用 Java构建棋盘游戏.对于游戏板本身,我试图将板的图像作为整个JPanel的背景,填充JFrame.我找到了一种方法来做到这一点,但只有本地存储的文件,它需要能够从GUI内部的图像中获取图像 ...
- Java httpClient中实现自定义DNS服务器地址配置
这个故事从一个小的需求开始. 在知乎编辑器中,链接插入以后可以选择转化为一个链接卡片,用户体验太棒了.这么好的点子,我们必须学(chao)习(xi)过来啊. 这个事情就这么被安排给了我们的前端同学.. ...
- java web自定义监听器_Android自定义监听器Listener(自定义Java Callback回调事件)
Callback回调事件介绍 Java或Android中创建异步回调最普遍的做法就是使用listener监听器或者observer观察者模式来解决,listener回调事件通常用于实现一个代码去监听另 ...
- java sessionstate_在Java Web开发中自定义Session
Session在存储安全性要求较高的会话信息方面是必不可少的,对于分布式Web应用自定义Session支持独立的状态服务器或集群是必须的.本文就来教大家如何在Java Web开发中自定义Session ...
- java 重写paint_java笔记 重写paintComponent方法以实现jPanel加背景
N年不用java写图形界面,但想了想,在点击事件中给上边图形重绘的方法重新来一遍应该可行.代码如下: package com.yimik.test.swing; import java.awt.Gra ...
- 黑苹果系统坏了如何恢复_黑苹果怎么修复Clover GUI启动选项 黑苹果怎么自定义Clover GUI启动选项...
相信很多使用和安装了黑苹果的用户都遇到过Clover GUI的问题.例如在使用Clover GUI的部分启动选项发生了丢失.分区选项太多不知道怎么隐藏某些分区.那么黑苹果怎么修复Clover GUI启 ...
- android 自定义背景园,Android 自定义ProgressBar 进度条颜色和背景颜色
Android 自定义ProgressBar 进度条颜色和背景颜色 首先,在drawable目录下新建文件 personal_center_level_progress_bg.xmlandroid a ...
最新文章
- 欧阳自远:有个性的嫦娥12345,如何不重复美国探月路?
- Setup best practices for Agile Scrum in your organization
- 使用Scalatra创建Scala WEB工程
- 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 9丨有趣的电影【难度简单】
- java查找目录文件函数_java 实现 文件操作工具集。包括文件、目录树的拷贝、删除、移动、查找等工具函数...
- 使用Visual Studio对项目重命名
- 如何用maven创建java项目_Maven创建Java项目
- JavaSE_day01【Java概述、环境搭建、标识符、变量、基本数据类型】
- 一位高速交警的救命忠告!常跑高速的一定要看!
- 解决支付订单,重复提交问题!
- java登录界面圆形头像,Android使用CircleImageView实现圆形头像的方法
- macos支持exfat吗_微软说,对Linux开放exFAT存储了!跨系统存储的福音
- 签名文字头像PSD模板源文件打包3D艺术字贴图创意网红头像-李廷学
- React.js 学习
- 1+X Web前端等级考证 | PHP 技术与应用(中级重点)
- OVH欧美地区机房测评
- 乐山计算机学校家长会,乐山市计算机学校学生家长体验高铁服务
- clion windows 找不到lib库问题
- 轻松办公系列1:利用python自动收集培训人员名单
- 《Android Studio开发实战 从零基础到App上线(第2版)》资源下载和内容勘误