尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Java AWT图形编程实战
要执行这些 Java AWT 图形程序你需要将它们分别保存为独立的.java文件并使用javac编译然后用java命令运行。以下是每个程序的执行步骤和预期效果。1. 程序清单与执行步骤程序文件主要功能编译命令运行命令GraphicsDemo.java绘制线条、矩形、椭圆、圆弧、多边形等基本图形。javac GraphicsDemo.javajava GraphicsDemoResizeMe.java创建一个窗口点击鼠标会循环改变窗口大小并在窗口内绘制两条交叉的对角线。javac ResizeMe.javajava ResizeMeColorDemo.java使用自定义颜色和系统预定义颜色绘制线条和形状。javac ColorDemo.javajava ColorDemoXOR.java演示图形 XOR 绘制模式。窗口中有几个色块鼠标移动时会显示一个黑色的十字准星与背景产生异或效果。javac XOR.javajava XORShowFonts.java获取并显示本地图形环境中前5种可用字体族的名称。javac ShowFonts.javajava ShowFontsSampleFonts.java点击鼠标可以在几种预定义字体Dialog, DialogInput, SansSerif, Serif, Monospaced之间循环切换显示。javac SampleFonts.javajava SampleFontsFontInfo.java显示当前图形上下文Graphics所使用的字体的详细信息包括族名、字体名、大小和样式。javac FontInfo.javajava FontInfoMultiLine.java演示如何使用FontMetrics进行精确的多行文本布局和绘制。javac MultiLine.javajava MultiLine2. 关键代码解析与注意事项窗口关闭事件处理所有程序都使用了匿名内部类来处理窗口关闭事件这是早期 AWT 编程的常见模式 。addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { System.exit(0); } });图形绘制核心所有绘制逻辑都在paint(Graphics g)方法中。Graphics对象g提供了各种绘图方法如drawLine,drawRect,fillOval,drawString等 。ResizeMe程序的尺寸逻辑该程序通过鼠标点击事件 (mouseReleased) 来改变窗口尺寸。其逻辑是每次点击宽高增加inc(25像素)当超过max(500像素)时重置为min(200像素) 。int h (d.height inc) max?min :(d.height inc);XOR程序的异或模式setXORMode(Color)方法设置绘图模式为异或。在此模式下绘制的内容会与当前位置已有的像素进行异或操作产生反转效果常用于实现高亮或临时标记如本例的十字准星。绘制完成后需调用setPaintMode()恢复普通模式 。g.drawLine(chsX, chsY-10, chsX, chsY10); g.setPaintMode(); // 恢复普通绘制模式 字体处理ShowFonts使用GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames()获取系统可用字体列表 。SampleFonts通过鼠标点击事件循环切换Font对象并调用setFont()和repaint()来更新显示 。FontInfo使用Graphics.getFont()获取当前字体并通过Font类的方法如getName(),getStyle()查询其属性 。MultiLine使用FontMetrics对象通过g.getFontMetrics()获取来计算字符串宽度 (stringWidth) 和字体高度 (getHeight)从而实现精确的文本换行和对齐 。3. 执行结果概览执行这些程序后你将看到一系列独立的 AWT 窗口GraphicsDemo一个固定大小的窗口内部绘制了多种几何图形。ResizeMe一个初始为 200x200 的窗口内部有两条从左上到右下、左下到右上的交叉线。每次在窗口内点击鼠标窗口尺寸会增大达到500像素后会重置为200像素。ColorDemo一个显示多种彩色线条和形状的窗口。XOR窗口中有绿色、蓝色、黑色和红色四个色块。移动鼠标会看到一个黑色的十字准星跟随鼠标移动并与背景色块产生异或闪烁效果。ShowFonts一个窗口显示一行文本内容为系统前5种可用字体族的名称。SampleFonts一个窗口显示当前使用的字体名称。每次在窗口内点击鼠标显示的字体会在五种逻辑字体间循环切换。FontInfo一个窗口显示当前绘制字体的详细信息例如Family: Dialog, Font: Dialog, Size: 12, Style: Plain。MultiLine一个窗口演示了三行文本的输出其中第二行由两次在同一行绘制 (sameLine) 的调用组成。参考来源Java循环结构详解与实战for、while、do-whileJava 17 新特性解析与代码示例java编程源代码_java经典编程300例源代码下载Java编程与游戏开发基础解析构建交互式3D魔方小游戏Java编程与图形技术综合指南
RELATED

相关推荐

把安全写进芯片基因:国产化替代深水区的全栈技术落地

把安全写进芯片基因:国产化替代深水区的全栈技术落地

核心结论:信创安全的三重技术答卷 信创安全的技术落地,核心在于"芯片可信国密筑基供应链透明"三重协同。 2026年信创产业进入深水区,国产化替代从"能用"迈向"好用且安全",全栈渗透率已达65%&#x…

📅 2026/10/5 14:32:24
像素即空间,孪生即智能!镜像视界重构数字孪生底座,打造全域可计算可推演的实景孪生

像素即空间,孪生即智能!镜像视界重构数字孪生底座,打造全域可计算可推演的实景孪生

像素即空间,孪生即智能!镜像视界重构数字孪生底座,打造全域可计算可推演的实景孪生前言数字孪生行业历经十余年迭代,行业发展已经迎来清晰分水岭:传统静态建模孪生长期困于可视化表层,只复刻外形、不生成空…

📅 2026/9/8 23:32:32
no-littering高级技巧:自定义目录结构和路径主题

no-littering高级技巧:自定义目录结构和路径主题

no-littering高级技巧:自定义目录结构和路径主题 【免费下载链接】no-littering Help keeping ~/.config/emacs clean 项目地址: https://gitcode.com/gh_mirrors/no/no-littering no-littering是一款强大的Emacs插件,专为帮助用户保持~/.config/…

📅 2026/8/23 22:38:57
MORE NEWS

更多资讯

📰

华为交换机DHCP配置实战:多网段地址池、中继与Snooping故障排查

搞网络这一行,DHCP四个字母出现频率极高。前两天帮朋友梳理华为交换机的DHCP配置,顺手查了下大家最近搜得多的几个词,发现热度几乎都集中在同一批疑难上:华为交换机怎么看DHCP配置、一个DHCP服务器到底能发几个网段、内网已经摆着…

📰

开发工具实战指南:编辑器、终端、Git与自动化的高效配置

经常有人问我“用什么开发工具”,一开始我还认真给人列清单,后来发现没多大用。工具这东西,最难的不是“知道”,而是“用起来顺手”。同样一个编辑器,有人配完插件后写代码像飞一样,有人装了一堆东西反而卡…

📰

VMware虚拟机忘记root密码?GRUB单用户模式重置实操指南

1. 虚拟机忘记root密码,先别急着重装系统做运维或者搞开发环境的朋友应该都有过这种经历:一台VM虚拟机里的Linux系统放了一段时间没动,等再想起来要进去配点什么的时候,发现root密码怎么都想不起来了。尤其是测试环境、临时搭的实…

📰

鸿蒙Flutter流式解析JSON:json_events内存优化实践

做鸿蒙 Flutter 开发的朋友,应该都经历过这种崩溃现场:后台同步一份几十 MB 的 JSON,你下意识jsonDecode下去,内存直接爆掉。我在做鸿蒙版日志上报模块时,就被一份 200MB 的堆栈 JSON 干翻过。后来把整套解析链路切成了…

📰

麒麟V10上.NET图形程序报错?libgdiplus安装配置与避坑指南

简介:这份文档面向在国产 Kylin 操作系统上部署 .NET 或依赖 Windows GDI 图形接口应用的运维与开发人员,聚焦 LibGdiPlus 的安装与配置这一关键环节,帮助解决跨平台程序在 Linux 环境下因缺少 GDI 支持而无法正常绘图、渲染的问题。资源包共…

📰

OTC承兑平台系统源码解析:从业务闭环到部署避坑

简介:这是一套基于Java实现的OTC承兑平台系统源码,完整覆盖数字货币场外交易所需的Web端与Android移动端应用。项目定位明确,既能作为计算机相关专业的毕业设计参考,也适合希望深入交易系统开发的中高级开发者。压缩包共2000个文件…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬