那什么是JPanel?JFrame 又是什么呢?让我们先来了解一下他们的区别吧:

JFrame是最底层,JPanel是置于其面上,同一个界面只有一个JFrame,一个JFrame可以放多个JPanel。如果你直接在JFrame上放也可以,但是首先不规范,然后要是过于复杂的界面你准备如何处理这么多控件呢?
对于java页面的布局,我的理解就是JFrame 就像是一张大的桌子,你可以直接把鱼呀,肉了,直接放在桌面上,没有盘子进行分类管理,这时我们就需要jpanel这样的盘子来放我们需要的一些控件。便于管理。

那接下来让我们首先使用JPanel 和 JFrame画一个圆:

JFrame 就相当于是一个窗口,你也可以把它理解成是一个画框,而此时JPanel 就相当于是一个画板,通常继承 JPanel 类的面板通过重写paint()方法进行绘图

package huitu.com;import javax.swing.*;
import java.awt.*;/***计算机在屏幕上显示的内容都是由屏幕上的每一个像素组成的。例如,计算机显示* 器的分辨率是800×600,表示计算机屏幕上的每一行由800个点组成,共有600行,* 整个计算机屏幕共有480000个像素。像素是一个密度单位而厘米是长度单位两* 者无法比较*/
@SuppressWarnings({"all"})public class DrawingTest01 extends JFrame{// JFrame(框架)对应窗口,可以理解成是一个画框// 演示如何在面板上画出圆形// 定义一个面板private MyPanel mp=null;public static void main(String[] args) {new DrawingTest01();}public DrawingTest01() {// 初始化面板mp = new MyPanel();// 把面板放到窗口(画框)this.add(mp);//设置窗口大小this.setSize(400,300);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 当退出画框就退出程序this.setVisible(true);// 可以显示}
}/*** 绘图原理* √ Component类提供了两个和绘圈相关最重要的方法* 1. paint(Graphics)绘制组件的外观* 2. repaint刷新组件的外观* √当组件第一次在屏幕显示的时候程序会自动的用 paint方法来绘制组件* 在以下情况 paint将会被调用:* 1.窗口最小化再最大化* 2.窗口的大小发生变化* 3. repaint函数被调用*/// 1. 先定义一个MyPanel(面板),继承JPanel 类,画图形就在该面板上画
class MyPanel extends JPanel{/***说明:* 1. MyPanel 对象就是一个画板* 2. Graphics g 把 g 理解成一支画笔* 3. Graphics 提供了很多绘图的方法,可以画出各种图形以及填充颜色*/@Overridepublic void paint(Graphics g) {// 绘图方法super.paint(g);// 调用父类的方法完成初始化// 画出一个圆形g.drawOval(100,100,100,100);}
}

效果演示:

注意: 所画图形的大小是以窗口大小为参考系的,如果设置值大于了窗口大小,那我们是看不到完整的图形的,就好比你把画画得超出了画框,这种结果是非常不理想的

那么通过对JFrame 和JPanel 的初步了解,接下来让我们来看看他的一些主要方法和绘制各种各样的图形吧

package huitu.com;import javax.swing.*;
import java.awt.*;/*** 绘图方法:* ●Graphics类*  Graphics类你可以理解就是画笔为我们提供了各种绘制图形的方法[参考dk帮助文档]*/
public class DrawingTest02 extends JFrame{private MyPanel_ mp = null;public static void main(String[] args) {new DrawingTest02();}public DrawingTest02() {// 初始化面板mp = new MyPanel_();// 把面板放到窗口(画框)this.add(mp);//设置窗口大小this.setSize(1000, 600);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 当退出画框就退出程序this.setVisible(true);// 可以显示}
}class MyPanel_ extends JPanel{@Overridepublic void paint(Graphics g) {// 绘图方法super.paint(g);// 调用父类的方法完成初始化// 绘制不同的图形//1.画直线drawLine(int x1, int y1, int x2, int y2)g.drawLine(10,10,100,100);// 确定两点坐标//2.画矩形边框 drawRect(int x, int y, int width, int height)g.drawRect(10,10,100,100);// g.draw3DRect(); 3D// 3.画椭圆边框 drawOval(int x, int y, int width, int height)g.drawOval(10,10,100,100);//4.填充矩形 fillRect(int x, int y, int width, int height)// 设置画笔颜色g.setColor(Color.red);g.fillRect(40,50,100,100);// 5.填充椭圆 fillOval(int int int width, int height)g.setColor(Color.orange);g.fillOval(100,100,100,200);// 6.画图片 drawImage(Image img, int x,int y,..)// 1. 加载图片资源(获取图片资源)Image image = Toolkit.getDefaultToolkit().getImage("D:\\风耀.jpg");g.drawImage(image,270,100,324,462,this);// 7.画字符串 drawString(String str,int x, int y)g.setColor(Color.BLUE);g.setFont(new Font("隶书",Font.BOLD,50));// 隶书 ,粗体,大小g.drawString("为战而生,至死方休",220,80);// 8.设置画笔的字体setFont(Font font)//  9.设置画笔的颜色setColor(Color)}
}

效果演示:

另外还有一种插入图片的方式:

重写paintComponent()方法其触发调用的机制和paint()方法相同

 @Overrideprotected void paintComponent(Graphics g) {super.paintComponent(g);// 6.画图片 drawImage(Image img, int x,int y,..)// 1. 加载图片资源(获取图片资源)Image image = Toolkit.getDefaultToolkit().getImage("D:\\风耀.jpg");g.drawImage(image,270,100,324,462,this);}

当然我只是展示了其中一部分方法,其他的方法大家可以通过观看javaAPI查看 ,这也只是java图形界面设计的一点点基础,更多的创作思路还需要大家亲自去体验

java 图形界面设计,使用JPanel、JFrame 绘图,图形界面设计入门演示,各种主要绘图方法以及图片、文字插入相关推荐

  1. Java图形化界面设计——容器(JFrame)

    Java图形化界面设计--容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构 ...

  2. JAVA图形编程Swing之——JPanel绘图

    JAVA图形编程Swing之--JPanel绘图     一直搞不清怎么在JPanel中绘2D图像,主要是不知怎样得到Graphics类的对像来画图,今天查了查资料,测试N种方法,终于搞明白.下面做一 ...

  3. java成绩管理系统设计背景_java学生成绩管理系统界面设计

    关于学生成绩管理系统的界面设计:代码如下 数据库表设计 DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `username` varc ...

  4. Matlab gui用户图形设计界面学习笔记(一)——单个界面的菜单设计

    Matlab gui用户图形设计界面学习笔记(一)--单个界面的菜单设计 弹出式菜单(pop-up menu)和下拉列表框(listbox) 实现功能:pop menu最初为 "请选择省份& ...

  5. 使用Java编写一个简单的 JFrame登陆注册界面(一)

    使用Java awt 及 Swing 组件编写一个简单的JFrame登陆注册界面. 示例: 下面开始介绍如何编写. 通过调用实例化一个JFrame框架,在框架内嵌入JPanel,在JPanel上进行添 ...

  6. 【MATLAB】基本绘图 ( 绘制多图 | 设置图形对话框在 Windows 界面的位置和大小 | 在一个图形上绘制多个小图形 )

    文章目录 一.绘制多图 1.绘制多图 2.代码示例 二.设置图形对话框在 Windows 界面的位置和大小 三.在一个图形上绘制多个小图形 一.绘制多图 1.绘制多图 存在一种绘图情况 , 需要同时展 ...

  7. java 2 图形设计卷i awt_java 2 图形设计卷i:awt

    java 2 图形设计卷i:awt [2021-02-06 10:44:56]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(&qu ...

  8. android java与界面的关联_Android Studio安卓学习笔记(三)Android用户界面的设计布局与组件(一)用户界面布局设计(1)...

    当我们创建了一个安卓项目后,我们会发现真正建立一个完善的安卓项目并不是想象的那么容易.其实和设计GUI可视化界面一样,开发安卓也需要考虑很多方面,主要考虑的还是界面布局和需要的组件. 一:Androi ...

  9. 用java写qt界面_c++用Qt之后写图形界面是否比Java用swing简单

    传统的GUI程序开发不区分前端和后台,统一使用C++代码管理,源文件中既有创建和设置控件的代码,又有处理业务逻辑的代码,非常杂乱. 使用C++代码直接创建控件,不管是从语法上讲还是从代码量上讲,看起来 ...

  10. 【图形】交互式绘图软件开发设计

    一.理论基础 获取客户区的方法: a.在窗口类响应OnSize(),在类中,新建int变量,保存cx,cy b.在类函数中,用GetClientRect来获取 填充任意区域的方法: 参考:1.交互式绘 ...

最新文章

  1. 使用BCH提供的Cryptonize创建自己的加密代币
  2. 第7集 构造函数中抛出的异常
  3. 小米路由器是基于openWRT的,为啥小米路由器不开源?
  4. 深入浅出Yolo系列之Yolov3Yolov4Yolov5核心基础知识完整讲解
  5. 软考-信息系统项目管理师-量化的项目管理
  6. VM虚拟机运行Windows11出现蓝屏
  7. ccs 移植创建新工程_LiteOS裸机驱动移植05 | E53_SF1智慧消防扩展板驱动及使用
  8. php的类图怎么生成_PHP网站怎么划UML类图?
  9. linux 内核参数分析,linux 内核参数VM调优 之 参数调节和场景分析
  10. 大数据分析的思路与流程
  11. Python如何输出格式清晰的dict
  12. springcloud 心得记录
  13. 网页设计找灵感——汽车酷站赞赏
  14. 武汉加油!爬取百度迁徙地图数据+城市出行强度
  15. Pillow 10行代码给营业执照模板写数据,批量生产
  16. 【Unity3D】游戏配表Excel转Txt,并且打成ab包
  17. 使用MetaMask客户端获取以太坊测试网络ropsten测试币
  18. 摆脱处男_是时候摆脱我们的密码了
  19. 【Linux】主函数的三个形参
  20. 商业Web应用程序的用户界面设计

热门文章

  1. Selenium向下滑动
  2. pyplot绘图实例
  3. 小巧实用的真无线耳机,做工真不赖,英雄G2上手
  4. Java对象转JOSN格式字符串,value设置为null被过滤问题
  5. 彻底弄懂HTTP缓存机制及原理
  6. 计算机考试高级筛选怎么操作?
  7. 发展慢不一定是缺点,没有泡沫才是关键
  8. C语言零碎知识点之字符串数组
  9. 服务器日志显示英文,在闪亮的服务器上显示R控制台日志
  10. 2022-2028年全球与中国显微印刷行业深度分析