当前位置: 首页 > news >正文

Java重修笔记 第五十三天 坦克大战(一)绘图入门

  • 绘制简单的图形
1. 创建画板

        定义一个画板类,通过继承 JPanel 类来创建画板

2. 创建画笔

        在画板类中调用 paint 方法,并传入一个 Graphics g 对象,通过对 g 对象的操作来实现画画的过程

3. 开始作画

        调用 Graphics g 对象的方法在 paint 方法中作画

4. 创建画框

        定义一个框架类,通过继承 JFrame 类来创建一个框架,让 JPanel 画板能够在此框架中显示出来

5. 初始化面板

        在 JFrame 框架类中定义一个 JPanel 画板对象作为属性,并在 JFrame 类的构造方法中给 JPanel 画板对象开辟空间,即初始化面板

6. 将初始化好的面板放入画框

        在 JFrame 框架类的构造方法中初始化好 JPanel 对象后,调用框架类继承过来的add方法,将 JPanel 对象加入到该框架类中

7. 设置画框格式

        在构造方法中调用框架类继承过来的setSize方法、setVisiable方法、setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)方法来设置画框大小,是否可显示,按退出键退出程序等

8. 初始化框架

        new 框架类就能显示内容了

代码演示:

// 第四步: 创建画框
public class DrawCircle extends JFrame {private MyPanel mp;public static void main(String[] args) {// 第八步: 初始化框架new DrawCircle();}public DrawCircle() {// 第五步: 初始化面板mp = new MyPanel();// 第六步: 将初始化好的面板放入画框this.add(mp);// 第七步: 设置画框格式this.setSize(400,300);this.setVisible(true);}
}// 第一步: 创建画板
class MyPanel extends JPanel {// 第二步: 创建画笔@Overridepublic void paint(Graphics g) {super.paint(g);// 第三步: 开始作画g.drawOval(10, 10, 100, 100);}
}

运行结果:

  • paint 方法被调用的几种情况

1. 组件第一次显示

2. 窗口最小化再最大化

3. 窗口大小发生变化

4. repaint 方法主动刷新组件外观

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Android - NDK:jni传递数组参数,获取数组的返回值
  • 【C++ 面试 - 新特性】每日 3 题(九)
  • Web3 项目安全手册
  • BEV学习---LSS-2
  • oceanbase(ob)基于备份集搭建备租户方式
  • Linux中常见的Docker问题及解决方法
  • 【基础知识复习 - 随机练习题】
  • Flask 第三课 -- 第一个应用
  • C++设计模式——Memento备忘录模式
  • 谷粒商城-P125【gulimall-search】:更改 elasticsearch 版本不生效
  • 【电子通识】半导体工艺——刻蚀工艺
  • C语言指针详解与应用
  • HTML/CSS/JS学习笔记 Day4(HTML--C3 表格)
  • AI预测地球未来,温室效应失控?地球变金星?
  • Dubbo 与 Zookeeper 在项目中的应用:原理与实现详解
  • Java Agent 学习笔记
  • nodejs:开发并发布一个nodejs包
  • node入门
  • node学习系列之简单文件上传
  • Odoo domain写法及运用
  • Redux 中间件分析
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • 从setTimeout-setInterval看JS线程
  • 多线程事务回滚
  • 高度不固定时垂直居中
  • 关于extract.autodesk.io的一些说明
  • 你真的知道 == 和 equals 的区别吗?
  • 深入浅出Node.js
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 优化 Vue 项目编译文件大小
  • 再谈express与koa的对比
  • 做一名精致的JavaScripter 01:JavaScript简介
  • ​必胜客礼品卡回收多少钱,回收平台哪家好
  • # windows 运行框输入mrt提示错误:Windows 找不到文件‘mrt‘。请确定文件名是否正确后,再试一次
  • (~_~)
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (26)4.7 字符函数和字符串函数
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (PySpark)RDD实验实战——取最大数出现的次数
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (十六)一篇文章学会Java的常用API
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)德国人的记事本
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • *上位机的定义
  • ... 是什么 ?... 有什么用处?
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .NET 8 跨平台高性能边缘采集网关
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .net对接阿里云CSB服务