Java数组是简易图形绘制的核心支撑结构,承担图形数据持久化、批量管理与重绘调度任务;通过Shapes对象数组保存绘图状态,字符串和颜色数组批量生成工具按钮,坐标数组支持多点图形绘制与动态计算。

Java 数组在简易图形绘制中不是辅助工具,而是核心支撑结构。它承担着图形数据的持久化、批量管理与重绘调度三项关键任务——没有数组,每次窗口缩放或切换就会丢失所有已画内容。
用数组保存图形状态,避免重绘丢失
Swing 绘图中,窗口最小化或拉伸会触发 paintComponent 重绘,但系统不会自动记住你之前画过什么。解决办法是:把每笔图形的类型、坐标、颜色等信息存进数组。
- 定义统一容器类(如
Shapes),封装name("矩形")、x1,y1,x2,y2、color等字段 - 声明对象数组:
Shapes[] shapeArr = new Shapes[10000];,配合下标index动态追加 - 在鼠标释放(
mouseReleased)时创建新Shapes实例并存入数组,而非只调用一次drawRect()
用字符串/颜色数组批量生成工具按钮
画图工具栏通常有“直线”“圆”“红色”“蓝色”等十多个按钮。逐个写 new JButton("xxx") 易出错且难维护,数组可大幅简化。
- 准备字符串数组:
String[] btntexts = {"直线", "矩形", "圆形", "三角形"}; - 准备颜色数组:
Color[] colors = {Color.BLACK, Color.RED, Color.BLUE, Color.GREEN}; - 用 for 循环遍历创建按钮,并为每个按钮绑定相同监听器,通过
e.getSource()判断点击的是哪个
用坐标数组支持多点图形与动态计算
三角形、多边形、折线这类图形依赖多个顶点。硬编码 x1/y1/x2/y2/x3/y3 不灵活,改用数组更清晰可靠。
立即学习“Java免费学习笔记(深入)”;
- 例如存储三角形三个顶点:
int[] xPoints = {x1, x2, x3}; int[] yPoints = {y1, y2, y3}; - 绘制时直接传入:
g.drawPolygon(xPoints, yPoints, 3); - 若需拖拽调整形状,可对数组元素做偏移运算,比单独变量更易批量处理
数组长度固定,但可通过封装提升灵活性
Java 数组本身不可扩容,但这不意味着无法应对未知数量的图形。关键是合理封装和预留空间。
- 初始化时设足够大容量(如
new Shapes[5000]),实际只用前index个位置 - 避免用
ArrayList<Shapes>替代——虽然动态,但在重绘循环中频繁装箱/扩容影响性能 - 若真需无限扩展,可在底层仍用数组,外层封装一个带自动扩容逻辑的轻量级容器类


















