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

news2024/12/26 22:36:31
  • 绘制简单的图形
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 {
    // 第二步: 创建画笔
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        // 第三步: 开始作画
        g.drawOval(10, 10, 100, 100);
    }
}

运行结果:

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

1. 组件第一次显示

2. 窗口最小化再最大化

3. 窗口大小发生变化

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2124155.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

驰域货车四路监控ts视频格式化恢复方法

不少大货车都使用了驰域货车监控,一般是至少装四路,前后左右,有的还会车顶加一路。驰域货车记录仪特殊的地方在于:其采用了一种上古时期的视频格式----TS视频流。 故障存储: 128G卡/fat32 故障现象: 客户提供的信息是格式化后…

193页WORD省级智慧高速公路投标技术方案

关注智慧方案文库,学习9000多份智慧城市,智慧医院,智能制造,数字化转型,新质生产力,算力,大模型,AIGC,工业互联网,数字孪生......持续更新热点行业解决方案。…

云曦2024秋季开学考

ezezssrf 第一关:md5弱比较 yunxi%5B%5D1&wlgf%5B%5D2 第二关: md5强比较 需要在bp中传参,在hackbar里不行 yunxiiM%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DC V%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_B…

机器学习(西瓜书)第 6 章 支持向量机

6.1 算法原理 感知机要求就随便找一个超平面,只要能把正负样本分开就行 但是支持向量机不一样,它认为你不仅得把它分开,而且这个超平面还得尽可能的离正负样本远 6.2 间隔与支持向量 其中w (wi;w2;…;wd)为法向量,决…

基于51单片机的打点滴监控系统proteus仿真

地址:https://pan.baidu.com/s/1l3OxHLBwOzsChKHCJsAySQ 提取码:1234 仿真图: 芯片/模块的特点: AT89C52/AT89C51简介: AT89C52/AT89C51是一款经典的8位单片机,是意法半导体(STMicroelectron…

深入探索:自适应中值滤波器在图像去噪中的应用

在数字图像处理领域,噪声是影响图像质量的重要因素之一。椒盐噪声,作为常见的一种噪声,会在图像中随机产生过度黑或过度白的像素,严重影响图像的视觉质量。为了有效去除这类噪声,自适应中值滤波器(AMF&…

《论应用服务器基础软件》写作框架,软考高级系统架构设计师

论文真题 应用服务器是在当今基于互联网的企业级应用迅速发展,电子商务应用出现并快速膨胀的需求下产生的一种新技术。在分布式、多层结构及基于组件和服务器端程序设计的企业级应用开发中,应用服务器提供的是一个开发、部署、运行和管理、维护的平台,提供软件“集群”功能…

二十三种模式之原型模式(类比制作陶器更好理解一些)

1. 设计模式的分类 创建型模式(五种):工厂方法模式、单例模式、抽象工厂模式、原型模式、建造者模式。 结构型模式(七种):适配器模式、代理模式、装饰器模式、桥接模式、外观模式、享元模式、组合模式。 行为型模式(十一种):状态模式、模板方…

re题(16)BUUCTF-Java逆向解密

BUUCTF在线评测 (buuoj.cn)BUUCTF在线评测 (buuoj.cn) jadx 1.4.4安装:jadx-gui-1.4.4 反编译工具使用教程 - 莫贞俊晗 - 博客园 (cnblogs.com) 认识.class: Java-初识 .class 文件_class文件怎么打开-CSDN博客 用查壳工具也可以知道是java写的 放到ja…

Ocelot + Consul 无法转发IP问题

现象 Ocelot Concul 进行访问 Ocelot Concul 服务都部署在同一台机器上时,访问正常 服务部署在另外一台机器上时,无法访问 显示 102 (unknown) status code of request URI: 发现Ocelot 日志显示是 hostname/api 所有 换了一台电脑就无法访问了 Ocel…

LabVIEW回转马达试验系统

基于LabVIEW的回转马达试验台通过高度集成的硬件与软件配合,实现对回转马达的各项性能测试,包括空载排量、跑合试验和冲击试验等,以满足出厂测试的严格标准和要求。 项目背景 回转马达作为多种机械设备的核心动力源,其性能的可靠…

一文搞定高并发编程:CompletableFuture的supplyAsync与runAsync

CompletableFuture是Java 8中引入的一个类,用于简化异步编程和并发操作。它提供了一种方便的方式来处理异步任务的结果,以及将多个异步任务组合在一起执行。CompletableFuture支持链式操作,使得异步编程更加直观和灵活。 在引入CompletableFu…

Python(TensorFlow和PyTorch)及C++注意力网络导图

🎯要点 谱图神经网络计算注意力分数对比图神经网络、卷积网络和图注意力网络药物靶标建模学习和预测相互作用腹侧和背侧皮质下结构手写字体字符序列文本识别组织病理学图像分析长短期记忆财务模式预测相关性生物医学图像特征学习和迭代纠正 Python注意力机制 对…

Java面试篇基础部分-Java 实现的I/O方式

Java I/O 在整个的java.io包中提供了5个重要的I/O类和1个接口类。5个类分别是File、OutputStream、InputStream、Writer、Reader ,1个接口是指Serializable序列化接口。具体的使用方式可以查看JDK的参考文档。 Java NIO 实现 Java NIO的实现内容主要有如下的三个核心内容 Sel…

使用Vue3.5的onWatcherCleanup封装自动cancel的fetch函数

前言 在欧阳的上一篇 这应该是全网最详细的Vue3.5版本解读文章中有不少同学对Vue3.5新增的onWatcherCleanup有点疑惑,这个新增的API好像和watch API回调的第三个参数onCleanup功能好像重复了。今天这篇文章来讲讲新增的onWatcherCleanup函数的使用场景:…

《 C++ 容器全景指南:五 》深入探索 C++ 标准库中的 stack 与 queue 容器适配器

1、引言 1.1、容器适配器的概念与应用 容器适配器(Container Adapters)是 C 标准库提供的一种特殊容器,它不是一种独立的容器,而是对其他标准容器的封装,用来实现特定的数据结构如栈(stack)和…

【信创】麒麟KOS上安装使用网络抓包工具Wireshark

原文链接:【信创】麒麟KOS上安装使用网络抓包工具Wireshark Hello,大家好啊!今天给大家带来一篇关于如何在麒麟桌面操作系统上安装和使用Wireshark的文章。Wireshark是一款强大的网络协议分析工具,广泛应用于网络故障排查、网络流…

Makefile学习总结

Makefile学习总结 目录 Makefile学习总结1. Makefile介绍2. Makefile规则3. Makefile文件里的赋值方法4. Makefile常用函数4.1 字符串替换和分析函数4.2 文件名函数4.3 其他函数 5. Makefile使用示例6、多级目录通用Makefile Demo6.1 一般通用Makefile的设计思想6.2 Demo分析 参…

DAY73

作业 pro文件&#xff1a; QT texttospeech 头文件&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPushButton> //按钮类 #include <QLabel> //标签类 #include <QLineEdit> //行编译器类 #include…

【delphi】判断多显示器下,程序在那个显示器中

在 Delphi 中&#xff0c;如果你的电脑连接了多个显示器&#xff0c;可以通过以下步骤判断某个程序在哪个显示器上运行。 方法概述&#xff1a; 获取程序窗口的位置&#xff08;例如窗体的 Left、Top 坐标&#xff09;。使用 Screen.MonitorFromWindow 函数来确定该窗口所属的…