Java课设项目,虽不复杂,却意义深远。
-
选择与输入函数
-
在下拉选项框中选择需要处理的函数编号。
-
在文本框中输入函数表达式后,按回车键保存函数信息。
-
点击 OK 按钮绘制函数图像。
-
-
支持的函数表达式
- 函数表达式可以是 y=f(x) 的形式,也可以直接使用 f(x) 的形式。
-
缩放功能
-
点击 Enlarge 按钮可放大图像,点击 Reduce 按钮可缩小图像。
-
也可以通过鼠标滚轮调整缩放比例:
-
向上滚动放大图像。
-
向下滚动缩小图像。
-
清空图像
- 点击 Clear 按钮清空当前绘制的函数图像,并重置缩放比例。
-
多函数绘制
-
通过上下箭头键切换要绘制的函数编号。
-
支持同时绘制最多三个有效函数。
-
-
验证与清除函数
-
根据弹出对话框确认函数表达式是否有效。
-
如需清除某个函数,在对应选项框的文本区域中删除内容或输入空格即可。
-
-
保存图像
- 点击 OK 按钮后,不仅绘制函数图像,还会将图像保存到项目目录下的 images 文件夹中,文件以日期和时间命名以便区分。
-
函数表达式书写规则
-
系统支持省略乘号:如 xx 等同于 x^2,xxx 等同于 x^3。
-
对于三角函数,sinx 等同于 sin(x),但表达式 sinx+1 视为 sin(x+1),与 sin(x)+1 不同。
-
为确保系统正确解析函数,建议严格书写函数表达式。
-
-
支持的函数形式
- 可以使用 y=f(x) 或 f(x) 表达形式,均可被正确识别。
-
使用 Java 绘图 AWT 和 SWING
- 本项目使用 Java 的 AWT 和 SWING 库进行绘图操作。
-
插件主窗口
- 创建主窗口
JFrame jf
。
- 创建主窗口
-
设置布局管理器
- 将主窗口的布局管理器设置为
BorderLayout()
。
- 将主窗口的布局管理器设置为
-
创建下拉选择框
- 创建下拉选择框
functionChooser
,包含三个选项function1
、function2
和function3
,用于区分三个函数的输入和保存信息。
- 创建下拉选择框
-
创建容器 jPanel1
- 创建容器
jPanel1
,并向其中添加两个文本域:tips
:不可更改的提示文本域。functionField
:函数输入文本域。
- 在两个文本域中间添加下拉选择框
functionChooser
,用于解析和绘制输入的文本。 - 添加一个
okButton
按钮,并为其添加监控器,当按下okButton
时解析并绘制函数。
- 创建容器
-
将 jPanel1 添加到主窗口
- 将
jPanel1
添加到主窗口jf
的 SOUTH 位置。
- 将
-
创建容器 jPanel2
- 创建容器
jPanel2
,并向其中添加一个画布对象mc
(MyCanvas
继承自Canvas
)。 - 将
jPanel2
置于主窗口jf
的 CENTER 位置。
- 创建容器
-
创建容器 jPanel3
- 创建容器
jPanel3
,并向其中添加三个按钮:biggerButton
:放大按钮。smallerButton
:缩小按钮。clearButton
:清空按钮。
- 为这三个按钮创建方法添加监控器,分别实现放大、缩小和清空功能。通过一个缩放比例参数
scale
实现缩放,并向jPanel3
添加文本域scaleShow
,实时展示用户调节后的scale
。
- 创建容器
-
将 jPanel3 添加到主窗口
- 将
jPanel3
添加到主窗口jf
中,并分别设置主窗口的长宽度、可见性、默认关闭方式,使其位于 Windows 窗口的中间位置。
- 将
主类,实现主要功能,最主要的方法为其中的 init()
方法,将设置的变量初始化,实现各种监控器功能以及绘图功能。
主要用于处理函数,计算函数,其中包含 3 个方法:
getFunction
方法用来解析函数文本域,用来获取函数解析式,解析y=f(x)
和f(x)
两种格式。checkFunction
方法用来检查函数是否正确,调用了exp4j
包的Expression
类来解析表达式。calculateFunction
方法用来计算函数值,将Expression
里面的x
变量值更改实现计算功能。
主要包含五个方法:
showEnterWarningDialog
方法showEmptyWarningDialog
方法showScaleMessageDialog
方法showThreeFunctionsEmpty
方法showFunctionSavedDialog
方法
分别实现弹出函数输入错误警告对话框、函数输入为空警告对话框、缩放过度警告对话框、三个函数均为空警告对话框、函数已保存提示对话框。
主要包含 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)和不打包依赖(依靠机器系统环境)两种情况。