最近帮一位童鞋做一下学校布置的实践作业
需求:
1.写字板设计
要求:实现字体颜色、大小更改;实现查找、替换功能
2.画图工具设计
要求:实现画笔粗细、颜色选择;实现裁剪、插入图片
3.播放器设计
要求:实现播放、循环播放、暂停、快进、下一首、打开选择功能
语言自定,实现方式自定。
实现:
三个小公举均用java实现。其中写字板和画图工具使用jdk可直接实现,音乐播放器使用了maven,和jmf媒体框架
项目结构
音乐播放器原版来自从零开始撸音乐播放器(源码可下载)_撸播-CSDN博客
此项目里功能有所删减,音乐文件格式只支持wav。
项目地址:
报告
- 实验一:写字板设计
1. 实验选题:写字板设计
2. 实验目的和要求
目的:使用编程语言制作一个简易写字板并实现部分拓展功能
要求: 实现字体颜色、大小更改;实现查找、替换功能
3. 实验设计
主要涉及的控件:
Java ,java swing,ActionListener
界面设计:
代码设计:
- 界面代码设计:首先使用JTextPane 构建一个文本框,再使用JPanel构建一个操作按钮组合,使用JButton创建按钮并加入到JPanel
- 查找功能设计,使用JOptionPane.showInputDialog 弹出输入框用于接收要查找到字符,接收到查找字符不为空情况下,获取全部文本进行匹配查询,查询到之后进行高亮显示。
- 替换功能设计,使用JOptionPane.showInputDialog 弹出输入框 分别接收需要替换的字符和替换后的字符,再进行全文匹配,进行替换。
- 修改字体颜色设计,在修改颜色按钮上加监听事件,用户点击时使用JColorChooser.showDialog弹出调色板,选择颜色后,将选中的内容颜色修改。
- 修改字体大小功能设计,在修改大小按钮上添加监听事件点击时,弹出输入框供用户输入大小值,改变选中内容字体大小。
4. 测试步骤
⑴ 写字板输入测试
⑵ 查找测试
⑶ 修改字体大小测试
(4)修改字体颜色测试
5. 心得
通过该次实验,熟悉了写字板的基本功能的相关逻辑,学习了使用java swing 创建操作界面功能,拉起输入框等,打开调色板等。在设计替换功能时 考虑到程序稳定和实现方便讲需要替换的内容和替换后的内容分开输入和获取字符内容之后再进行程序替换。本次实验完成基本的功能需求,经测试后修改后,使用简单方便,但是在文本数据多的情况下也可能产生未知问题,还需要更进一步优化程序和设计更加稳定的架构。
- 实验二:画图工具设计
1. 实验选题:画图工具设计
2. 实验目的和要求
目的:了解画图工具基本功能,了解画图工具基本工作逻辑,完成画图工具设计编码运行测试等。
要求: 实现画笔粗细、颜色选择;实现裁剪、插入图片
3. 实验设计
主要涉及的控件:
Java swing ,BufferedImage,IO,JFrame,Graphics2D
界面设计:
代码设计:
1.界面排版代码设计,使用实现JPanel并加入自定义内容实现画图板设计,包括画图板颜色,大小等。使用JButton 创建各个操作按钮,并放入JPanel中,组合成画图板工具和其中的操作按钮。
2.画笔粗细功能代码设计,监听“画笔粗细”按钮,使用JOptionPane.showInputDialog拉起输入框,用户输入画笔大小,接收到参数,修改画笔粗细。
主要代码:
JButton penWidthButton = new JButton("画笔粗细");
penWidthButton.addActionListener(e -> {
String width = JOptionPane.showInputDialog("Enter pen width:");
try {
float newWidth = Float.parseFloat(width);
if (newWidth > 0) {
penWidth = newWidth;
drawingPanel.setStrokeWidth(penWidth);
}
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null, "Invalid width");
}
});
controlsPanel.add(penWidthButton);
3.画笔颜色功能代码设计,监听“画笔颜色”按钮,拉起调色板供用户选择颜色,再修改画笔颜色。
主要代码:
JPanel controlsPanel = new JPanel();
JButton penColorButton = new JButton("画笔颜色");
penColorButton.addActionListener(e -> {
Color newColor = JColorChooser.showDialog(null, "Choose Pen Color", penColor);
if (newColor != null) {
penColor = newColor;
drawingPanel.setDrawColor(penColor);
}
});
controlsPanel.add(penColorButton);
4.画笔基本功能设计(画画功能),使用list保存画笔路径上的所有点,在画笔拖动时进行渲染。
5.裁剪功能设计,首先根据鼠标拖动进行矩阵渲染,获取起始点和结束点进行矩阵计算,最后获取到图片,把画板clear再将图片渲染上去。
6.插入图片功能,监听“插入图片”按钮,使用JFileChooser拉起文件选择,选择文件后将图片流渲染至画板
4. 测试步骤
⑴ 画图基本功能测试
⑵ 画笔颜色功能测试
⑶ 画笔大小功能测试
(4)裁剪功能测试
(5)插入图片功能测试
5. 心得
通过该次实验,熟悉了画图工具的基本构成,了解画图功能制作原理,学会了画图的渲染基本逻辑,从点构成线的渲染。在设计裁剪功能时发现裁剪大小总是与实际选中大小不符,最终发现是宽高获取与实际选中不符。在设计裁剪功能时为了程序合理将功能拆分为选取区域和裁剪两部操作,使程序稳定。本次实验中遇到其他一些难题,但在坚持不懈下都一一解决,最终完成了符合要求的画图工具设计,但仍有一些瑕疵,如图片插入后位置调整问题等,截取内容位置移动等问题,仍需要解决优化.
- 实验三:播放器设计
1. 实验选题:播放器设计
2. 实验目的和要求
目的:了解播放器运作流程,使用编程语言开发一款简易播放器
要求: 实现播放、循环播放、暂停、快进、下一首、打开选择功能
3. 实验设计
主要涉及的控件:
Java swing ,JFrame,jmf,FileDialog,JPanel,MouseAdapter,maven
![]() |
界面设计:
代码设计:
1.界面设计,使用 JPanel,JMenu,JFrame,JLabel,进行排版构建,组成操作展示界面。
2.添加歌曲功能设计,监听添加按钮,拉起文件资源,选取文件进行歌曲添加,获取到文件名集合,展示到列表上。用数组保存,并建立播放指针,当切换下一首时指针进行循环递增。
3.播放设计使用jmf的Player 对wav资源进行播放,并获取时长,以及监听播放位置。
4.暂停播放设计,监听按钮,点击播放时按钮变成暂停,并继续开始播放音乐,点击暂停时按钮变成播放,并记录当前播放时间,暂停音乐播放。
5.快进功能设计,在时间条上做监听,拉动时间条计算比值,在指定时间开始播放。
4. 测试步骤
⑴ 测试播放功能
⑵ 测试添加资源功能
⑶ 测试循环播放功能
(4)测试播放暂停功能
(5)测试循环播放,下一首功能
5. 心得
通过该次实验,熟悉了音频文件资源读取播放的方法,对java swing 窗口设计有了更深的了解,最开始使用java zoom进行简单的音频播放,但苦于一直无法完成暂停以及快进功能,最终换成 jmf中的资源播放工具包。还在程序中使用了异步线程的方式播放,使播放不阻塞主线程的运行。通过本次音频播放设计,从底层的角度了解了音频播放的控制逻辑,熟悉了对音频文件资源的读取以及控制。对工具的程序设计有了更深的了解和实践经验。 本次实践只是完成了播放器的基本功能,如需完善功能仍需要不断探索,还有操作界面简陋等问题存在,仍需优化。