Skip to content

mintoneko/Java_Function_Draw

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Java课设项目,虽不复杂,却意义深远。

功能说明

基本功能

  1. 选择与输入函数

    • 在下拉选项框中选择需要处理的函数编号。

    • 在文本框中输入函数表达式后,按回车键保存函数信息。

    • 点击 OK 按钮绘制函数图像。

  2. 支持的函数表达式

    • 函数表达式可以是 y=f(x) 的形式,也可以直接使用 f(x) 的形式。
  3. 缩放功能

  • 点击 Enlarge 按钮可放大图像,点击 Reduce 按钮可缩小图像。

  • 也可以通过鼠标滚轮调整缩放比例:

  • 向上滚动放大图像。

  • 向下滚动缩小图像。

  1. 清空图像

    • 点击 Clear 按钮清空当前绘制的函数图像,并重置缩放比例。
  2. 多函数绘制

    • 通过上下箭头键切换要绘制的函数编号。

    • 支持同时绘制最多三个有效函数。

  3. 验证与清除函数

    • 根据弹出对话框确认函数表达式是否有效。

    • 如需清除某个函数,在对应选项框的文本区域中删除内容或输入空格即可。

  4. 保存图像

    • 点击 OK 按钮后,不仅绘制函数图像,还会将图像保存到项目目录下的 images 文件夹中,文件以日期和时间命名以便区分。

注意事项

  1. 函数表达式书写规则

    • 系统支持省略乘号:如 xx 等同于 x^2,xxx 等同于 x^3。

    • 对于三角函数,sinx 等同于 sin(x),但表达式 sinx+1 视为 sin(x+1),与 sin(x)+1 不同。

    • 为确保系统正确解析函数,建议严格书写函数表达式。

  2. 支持的函数形式

    • 可以使用 y=f(x) 或 f(x) 表达形式,均可被正确识别。

项目流程

  1. 使用 Java 绘图 AWT 和 SWING

    • 本项目使用 Java 的 AWT 和 SWING 库进行绘图操作。
  2. 插件主窗口

    • 创建主窗口 JFrame jf
  3. 设置布局管理器

    • 将主窗口的布局管理器设置为 BorderLayout()
  4. 创建下拉选择框

    • 创建下拉选择框 functionChooser,包含三个选项 function1function2function3,用于区分三个函数的输入和保存信息。
  5. 创建容器 jPanel1

    • 创建容器 jPanel1,并向其中添加两个文本域:
      • tips:不可更改的提示文本域。
      • functionField:函数输入文本域。
    • 在两个文本域中间添加下拉选择框 functionChooser,用于解析和绘制输入的文本。
    • 添加一个 okButton 按钮,并为其添加监控器,当按下 okButton 时解析并绘制函数。
  6. 将 jPanel1 添加到主窗口

    • jPanel1 添加到主窗口 jf 的 SOUTH 位置。
  7. 创建容器 jPanel2

    • 创建容器 jPanel2,并向其中添加一个画布对象 mcMyCanvas 继承自 Canvas)。
    • jPanel2 置于主窗口 jf 的 CENTER 位置。
  8. 创建容器 jPanel3

    • 创建容器 jPanel3,并向其中添加三个按钮:
      • biggerButton:放大按钮。
      • smallerButton:缩小按钮。
      • clearButton:清空按钮。
    • 为这三个按钮创建方法添加监控器,分别实现放大、缩小和清空功能。通过一个缩放比例参数 scale 实现缩放,并向 jPanel3 添加文本域 scaleShow,实时展示用户调节后的 scale
  9. 将 jPanel3 添加到主窗口

    • jPanel3 添加到主窗口 jf 中,并分别设置主窗口的长宽度、可见性、默认关闭方式,使其位于 Windows 窗口的中间位置。

四个类解释

1.FunctionDraw 类

主类,实现主要功能,最主要的方法为其中的 init() 方法,将设置的变量初始化,实现各种监控器功能以及绘图功能。

2.FunctionSolution 类

主要用于处理函数,计算函数,其中包含 3 个方法:

  1. getFunction 方法用来解析函数文本域,用来获取函数解析式,解析 y=f(x)f(x) 两种格式。
  2. checkFunction 方法用来检查函数是否正确,调用了 exp4j 包的 Expression 类来解析表达式。
  3. calculateFunction 方法用来计算函数值,将 Expression 里面的 x 变量值更改实现计算功能。

3.ShowDialog 类

主要包含五个方法:

  1. showEnterWarningDialog 方法
  2. showEmptyWarningDialog 方法
  3. showScaleMessageDialog 方法
  4. showThreeFunctionsEmpty 方法
  5. showFunctionSavedDialog 方法

分别实现弹出函数输入错误警告对话框、函数输入为空警告对话框、缩放过度警告对话框、三个函数均为空警告对话框、函数已保存提示对话框。

4.FunctionSave 类

主要包含 saveImage 方法,实现将绘制的函数保存到 images 对应的文件中,实现原理见代码原理的最后一部分。

项目架构

.
├── FunctionDraw.iml
├── images
│   └── 2023-12-12
│       └── 21-29-21
│           ├── functions.txt
│           └── image.jpg
├── resources
│   ├── FunctionDraw.java
│   ├── FunctionSave.java
│   ├── FunctionSolution.java
│   ├── ShowDialog.java
│   └── exp4j-0.4.8.jar
└── src
    ├── META-INF
    │   └── MANIFEST.MF
    ├── lib
    │   └── exp4j-0.4.8.jar
    └── practice
        ├── FunctionDraw.java
        ├── FunctionSave.java
        ├── FunctionSolution.java
        └── ShowDialog.java

9 directories, 14 files

images保存绘制的结果,按照时间自动创建文件夹,时间格式为:年-月-日,然后下一级就是每次绘制的时间点:时-分-秒

  • functions.txt为绘制的函数
  • image为绘制的函数图片

Java项目打包工具:

https://www.ej-technologies.com/exe4j/download

使用教程可在B站上找到,打包时注意打包依赖(jre)和不打包依赖(依靠机器系统环境)两种情况。

About

Java简易函数图像绘制工具,Java课设

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages