【Java学习笔记】Java绘图基础

Java绘图基础

一、Java 坐标体系

1. 像素的概念

2. 坐标

在这里插入图片描述

横坐标:x

纵坐标:y

坐标原点:位于左上角

距离:表示距离原点有多少个像素单位


二、绘图方法

1. 绘图原理

Component 类提供了两个和绘图相关最重要的方法

当组件第一次在屏幕显示的时候,程序会自动的调用 paint()方法来绘制组件。

在以下情况 paint()将会被调用

2. 绘制画板

类:JPanel

自定义类继承该类,重载 paint 构造器,调用父类的方法完成构造器的初始化(画一个圆为示例

class MyPanel extends JPanel{@Overridepublic void paint(Graphics g) {super.paint(g);g.drawOval(150,50,100,100);}
}

代码解析

  • Graphics是一个类,可以理解为画笔,通过调用该类中的方法来完成绘图

  • 调用该类中的drawOval()方法,绘制一个圆形

  • 画圆的方法:首先根据坐标找到对应的位置,从该坐标点开始,按照给定的长度和宽度开始画圆(如果长宽不一致就是椭圆)

3. 绘制窗口,显示画板内容

类:JFrame

让主类继承该类,创建画板对象,在该类的构造器中完成窗口的初始化并添加画板

窗口的构建步骤、

运行查看效果:在主函数中创建一个窗口对象,第一次会自动调用 paint()方法完成绘图(前面的绘图原理)

public class drawcircle extends JFrame{// 定义一个panelMyPanel panel = null;// 窗口的初始化,在构造器中完成public drawcircle(){// 初始化画板panel = new MyPanel();// 添加画板到窗口中this.add(panel);// 设置窗口大小this.setSize(400,300);// 设置窗口可见this.setVisible(true);// 设置关闭窗口,程序结束this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public static void main(String[] args) {new drawcircle();}
}

绘图效果

在这里插入图片描述

4. Graphics 类方法

方法描述
setColor(Color c)设置绘图颜色。使用 Color 类指定颜色
setFont(Font font)设置字体。使用 Font 类指定字体样式
drawLine(int x1, int y1, int x2, int y2)绘制一条线段,连接指定的两个坐标点 (x1, y1)(x2, y2)
drawRect(int x, int y, int width, int height)绘制矩形,指定矩形的左上角 (x, y) 和宽度、高度。
fillRect(int x, int y, int width, int height)绘制并填充矩形,指定矩形的左上角 (x, y) 和宽度、高度。
drawOval(int x, int y, int width, int height)绘制椭圆,指定椭圆的外接矩形的左上角 (x, y) 和宽度、高度。
fillOval(int x, int y, int width, int height)绘制并填充椭圆,指定椭圆的外接矩形的左上角 (x, y) 和宽度、高度。
drawString(String str, int x, int y)在指定位置 (x, y) 绘制文本字符串。
drawImage(Image img, int x, int y, ImageObserver observer)在指定位置 (x, y) 绘制图片

(1)绘制直线:传入起始坐标和终点坐标

(2)绘制矩形边框:传入起始坐标,传入矩形的长和宽

(3)填充矩形颜色:需要在绘制前设置矩形颜色(默认是黑色)

方法:setColor(Color.颜色名)

class MyPanel extends JPanel{@Overridepublic void paint(Graphics g) {super.paint(g);System.out.println("paint方法被调用");g.setColor(Color.lightGray);g.fillRect(50,50,100,100);}
}

(4)绘制椭圆边框,填充椭圆边框的方法大同小异,这里不做赘述

(5)绘制文本字符串

字体样式

字段描述
Font.PLAIN普通字体,默认样式,没有加粗和斜体效果。
Font.BOLD粗体样式,文本加粗,通常用于强调文本。
Font.ITALIC斜体样式,文本倾斜,用于表示风格或突出显示部分文本。
Font.BOLD + Font.ITALIC粗斜体样式,文本既加粗又倾斜,通常用于非常显眼的文本。
class MyPanel extends JPanel{@Overridepublic void paint(Graphics g) {super.paint(g);System.out.println("paint方法被调用");g.setColor(Color.lightGray);  // 灰色g.setFont(new Font("楷体",Font.PLAIN,100));g.drawString("Java",70,150);}
}

(6)绘制图片

准备工作:把图片放在 out 文件夹下的项目的根目录(易错:如果有多个包时,不是放在对应的包下,而是该项目名称的根目录下)

绘制步骤

class MyPanel extends JPanel{@Overridepublic void paint(Graphics g) {super.paint(g);System.out.println("paint方法被调用");Image image = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/image.png"));g.drawImage(image,0,0,100,140,this);}
}

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

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

相关文章

资深Java工程师的面试题目(一)基础到高级概述

以下是几道面向资深Java工程师的面试题目,涵盖了从基础知识到高级概念及参考答案: 1. Java内存模型和垃圾回收 问题: 请解释一下Java的内存模型,并描述不同类型的内存区域。如何选择适合特定应用需求的垃圾收集器?请比较几种常…

Spring Retry:优雅地实现方法重试机制

前言 在实际的软件开发中,尤其是在涉及网络请求、数据库操作或外部服务调用的场景下,我们常常会遇到一些临时性故障(Transient Failures),例如网络波动、数据库连接超时、第三方 API 暂时不可用等。面对这些问题&…

Mysql报错

1.权限问题 MySQL 认证协议不兼容问题解决方案 这个错误表明您的 MySQL 客户端与服务器要求的认证协议不兼容,通常发生在 MySQL 8.0 服务器与旧版客户端之间。 nested exception is org.apache.ibatis.exceptions.PersistenceException: Error querying database. …

小米汽车5月交付量超过28000台,与上月持平

6月1日,小米汽车公布5月交付数据,2025年5月,小米汽车交付量超过28000台,4月官方披露的交付数据也为28000台。 此外,小米汽车5月新增29家门店,全国82城已有298家门店;6月计划新增37家门店&#x…

严格一致性模型

SC 的第二点约束 :store 必须被 所有(包括自身)执行流 同时看到 ,但是不要求写操作“立即”对其他处理器可见;允许写操作延迟一会儿被其他核观察到。 而 严格一致性模型,包括1. store 必须被 所有(包括自身)执行流 同时看到2. 看到的时间 必须是 某个处理器完成写操…

结合 STM32CubeMX 使用 FreeRTOS 实时操作系统

前言 在STM32CubeMX软件出现以后,创建嵌入式项目变得简洁了许多,开发者无需重复编写MCU的外设初始化配置,只需在STM32CubeMX软件中动动鼠标配置完毕,就可以自动生成基于HAL/LL库的Keil项目文件,提高了开发效率。 最近想…

一致性框架:供应链分布式事务问题解决方案

来源:得物技术 一、前言 二、一致性理论基础 1. 一致性模型概述 2. 最终一致性的必要性 三、供应链一致性框架总体架构 1. 一致性框架的核心功能 2. 一致性框架整体框架 3. 一致性框架整体流程 四、一致性框架实现原理 1. 核心组件设计 2. 异步执行实现原…

民国大模型:智能重构下的乱世觉醒与文明转型

引言:当外滩钟声遇见生成式AI 在历史博物馆的数字化展厅中,一幅动态的《民国百景图》正通过全息投影技术演绎十里洋场的繁华与沧桑。这个虚实交融的场景,恰似民国大模型技术的隐喻——以人工智能为纽带,连接起北洋军阀混战与民族…

ROS2 笔记汇总(2) 通信接口

在 ROS 系统中,通信接口(Interface) 是节点之间传递信息的标准“语言协议”,确保了不同功能节点之间可以正确理解和使用彼此传送的数据内容。我们可以将其理解为“数据结构格式定义”,贯穿于话题(Topic&…

微信小程序:将搜索框和表格封装成组件,页面调用组件

一、实现效果 实现搜索框,表格和翻页效果 二、组件实现 1、创建表格组件页面 (1)创建文件 在文件根目录(与pages同级)直接创建components文件夹,并创建表格的页面common-table/index (2)视图层 a、写入表头 循环由主页面传递的columns,数据为字段名label,宽度为设置…

基于贝叶斯学习方法的块稀疏信号压缩感知算法

基于贝叶斯学习方法的块稀疏信号压缩感知算法 BSBL-FM-master/BSBL_BO.m , 15593 BSBL-FM-master/BSBL_FM.m , 12854 BSBL-FM-master/Phi.mat , 131256 BSBL-FM-master/README.md , 3954 BSBL-FM-master/demo.mat , 1610 BSBL-FM-master/demo_fecg.m , 1481 BSBL-FM-master/de…

【Python爬虫】requests知识点讲解

目录 前言1. requests库基础1.1 安装requests1.2 基本导入 2. HTTP请求方法2.1 GET请求2.2 POST请求2.3 其他HTTP方法 3. 请求头设置3.1 User-Agent设置3.2 常用请求头 4. 响应处理4.1 响应内容获取4.2 响应状态码4.3 响应头信息 5. 会话管理5.1 Session对象5.2 Cookie处理 6. …

服务器上安装配置vsftpd

目录 1. 安装vsftpd服务 2、修改配置文件 3. 修改用户白名单 4. 通过ftp客户端命令登录ftp服务器 5. 参考资料 1. 安装vsftpd服务 执行命令安装vsftp服务、和ftp客户端 yum install vsftpd yum install ftp 2、修改配置文件 在服务器上先创建一个系统用户,待…

C#实现图片文字识别

这几年的AI的发展,使得文字识别难度大大降低、精度大大的提高。百度飞浆就是一个非常好的AI框架,而且是开源的。 我们利用百度飞浆就能快速简单的实现文字识别功能,几行代码就可以集成。 其中百度飞浆的PaddleOCR,就是专门针对文…

Android Framework 调用栈

在Android Framework开发中,添加调用栈(Call Stack)是调试复杂问题(如崩溃、死锁或流程追踪)的核心手段。 一、Java层调用栈添加 适用于Activity、Service等组件或Framework中的Java代码。 基础方法: 使用…

Ollama安装非系统盘操作方法(2025年6月测试通过)

Ollama是当前部署大模型比较便利的工具,但是默认会将软件和模型都安装到C盘下,导致系统盘爆表,建议将软件和模型都放置在非系统盘。 1. 软件安装在非系统盘 (1)在D盘下手动创建ollama目录 (2&#xff09…

《HTTP权威指南》 第1-2章 HTTP和URL基础

HTTP请求基础 格式化数据块称为HTTP报文 请求报文:从客户端发往服务器的HTTP报文,只有请求起始行请求首部,没有请求主体 响应报文:从服务器发往客户端的报文,包含响应起始行响应首部响应主体 HTTP报文通过传输控制…

9. TypeScript 泛型

TypeScript 中的泛型使开发者能够编写灵活、可重用的代码,同时保持类型安全。它们允许动态定义类型,确保函数、类和接口可以适用于任何数据类型。这有助于避免重复,提高代码的模块化,使其既类型安全又具备适应性。 一、认识泛型 …

Apache Iceberg与Hive集成:分区表篇

一、Iceberg分区表核心概念与Hive集成原理 1.1 分区表在大数据场景的价值 在大规模数据分析中,分区表通过将数据按特定维度(如时间、地域、业务类型)划分存储,可显著提升查询效率。Apache Iceberg的分区表设计融合了Hive的分区理…

SAST + IAST + DAST 全链路防护体系构建方案

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 1. 生命周期分层嵌入(防御纵深) 阶段工具防护重点集成触发点编码阶段SAST源码漏洞(硬编码密钥、SQL注入模式&#x…