stooge播放器

1.团队名称、团队成员介绍、任务分配,团队成员课程设计博客链接

团队名称:stooge

成员姓名 任务分配 个人博客
王林涛(组长) UI界面设计,撰写博客,单击歌单列表播放音乐,MVC模式设计,面对对象设计
郭其松 数据库的设计,命名规范,歌曲进度条的拉动
黄鸿森 前期调查,音乐播放器中的音乐播放暂停,切换上下首,音乐的音量控制

2.本项目的git地址

https://gitee.com/huang-hongsen/stoogeplayer

3.项目git提交记录截图


4.前期调查


歌曲列表:展示歌曲组成的列表,包括歌曲的信息
进度条:显示歌曲播放进度,可以拖拽
播放暂停键:播放歌曲、暂停歌曲
音量调节条:调节歌曲音量的大小
左右键:切换播放上一首/下一首歌曲

5.项目功能架构图、主要功能流程图

6.面向对象设计包图、类图

类图:

包图:

7.项目运行截图或屏幕录制

8.项目关键代码:模块名称-文字说明-关键代码

MainController.playSong-播放音乐的控制器

private void playSong(String mediaUrl) {
		
		if(mediaPlayer != null) {
			mediaPlayer.dispose();
		}
		System.out.println("");
		volumeSlider.setMin(0);
		volumeSlider.setValue(0.3);
		volumeSlider.setMax(1);
		mediaPlayer = new MediaPlayer(new Media(mediaUrl));
		if(mediaPlayer != null) {
			mediaPlayer.setOnReady(new Runnable() {
				@Override
				public void run() {
					mediaPlayer.volumeProperty().bind(volumeSlider.valueProperty());
					
					timeSlider.setValue(0);
					timeSlider.setMin(0);
					timeSlider.setMax(mediaPlayer.getTotalDuration().toSeconds());
					mediaPlayer.currentTimeProperty().addListener(new ChangeListener<javafx.util.Duration>() {
						@Override
						public void changed(ObservableValue<? extends javafx.util.Duration> observable, javafx.util.Duration oldValue, javafx.util.Duration newValue) {
							if(ismpressed == false) {
								timeSlider.setValue(newValue.toSeconds());
							}
						}
					});
					
					
					mediaPlayer.play();
				}
			});
		}
		
	}

MainView.fxml-MainView使用fxml来实现UI界面

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.beans.value.ObservableValue?>
<?import javafx.collections.*?>

<AnchorPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controller.MainController">
   <children>
      <AnchorPane fx:id="an" layoutX="-142.0" layoutY="-100.0" prefHeight="900.0" prefWidth="1400.0">
         <children>
            <ListView fx:id="listView" layoutX="298.0" layoutY="111.0" prefHeight="644.0" prefWidth="939.0">
            	<items>
            		
            	</items>
            </ListView>
            <Slider fx:id="timeSlider" layoutX="842.0" layoutY="827.0" prefHeight="18.0" prefWidth="496.0" />
            <Slider fx:id="volumeSlider" layoutX="595.0" layoutY="763.0" orientation="VERTICAL" prefHeight="82.0" prefWidth="18.0" value="30.0">
            	
            </Slider>
            <Button layoutX="222.0" layoutY="821.0" mnemonicParsing="false" onAction="#getLastSong" text="上一首" />
            <Button layoutX="330.0" layoutY="821.0" mnemonicParsing="false" onAction="#musicOnorPause" text="播放/暂停" />
            <Button layoutX="458.0" layoutY="821.0" mnemonicParsing="false" onAction="#getNextSong" text="下一首" />
            <Label layoutX="589.0" layoutY="857.0" text="音量" textFill="WHITE" />
         </children>
      </AnchorPane>
   </children>
</AnchorPane>

posted @ 2021-01-29 02:52  Tvivanomy(王林涛)  阅读(71)  评论(0编辑  收藏  举报