⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 musicplayer.java

📁 不要重复上载同一源码
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
		System.out.println("现在播放第: " + (index + 1) + " 首歌");
		return index;
	}

	// 获取视窗组件
	private void getVisualComponent() {
		System.out.println("开始获取视窗组件");
		visual = player.getVisualComponent();
		if (visual != null) {
			visual.addMouseListener(new RightMouseListener());
			visual.setCursor(new Cursor(Cursor.HAND_CURSOR));
			panel_view.add(visual, BorderLayout.CENTER);
			panel_view.updateUI();
		}
	}

	// 处理静音事件

	public void mediaMute(String mute) {
		if (mute == "false" && player != null) {
			System.out.println("用户还原声音!");
			menuItem_noSound.setSelected(false);
			player.getGainControl().setMute(false);
		} else if (mute == "true" && player != null) {
			System.out.println("用户要求静音声音!");
			menuItem_noSound.setSelected(true);
			player.getGainControl().setMute(true);
		}
	}

	// 一个线程类处理进度条
	private class ControlProgrecess extends Thread {

		private boolean temp = true;

		public void run() {
			while (newTime <= fileTime && temp) {
				try {
					Thread.sleep(1000);
					slider_time.setValue((int) (newTime++));
					lable_infor.setText("音量:" + jSlider_sound.getValue() + " "
							+ "进度:" + (int) newTime / 3600 + ":"
							+ (int) (newTime % 3600) / 60 + ":"
							+ (int) (newTime % 60));

					System.out.println("音量:" + jSlider_sound.getValue() + " "
							+ "进度:" + (int) newTime / 3600 + ":"
							+ (int) (newTime % 3600) / 60 + ":"
							+ (int) (newTime % 60));

					System.out.println("======================");
				} catch (InterruptedException interruptedexception) {

				}
			}
			temp = true;
		}

		public void stopThread() {
			temp = false;
		}
	}

	// 打开文件添加到列表并自动播放
	public File[] open() {
		System.out.println("准备打开文件选择器....");
		JFileChooser fileChooser = new JFileChooser();

		// 文件过滤器
		FileNameExtensionFilter filter = new FileNameExtensionFilter("mp3",
				"MP3", "wav", "mpg", "mpeg", "wav", "avi", "gif", "GIF", "PNG",
				"png", "jpg", "JPG");
		fileChooser.setFileFilter(filter);
		fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);// 仅限显示文件
		fileChooser.setMultiSelectionEnabled(true);// 允许多选

		System.out.println("打开成功:  显示文件选择器");

		int result = fileChooser.showOpenDialog(this);

		if (result == JFileChooser.CANCEL_OPTION) {
			System.out.println("用户取消选择文件");
			return null;
		} else {
			System.out.println("用户选择文件" + fileChooser.getSelectedFile());
			files = fileChooser.getSelectedFiles();
			System.out.println("正在把文件添加到列表");
			addList(files);
			saveListToFile(files);
			if (player == null) {
				playMedia(randomPodePlayer(list.getLastVisibleIndex()));
			}
			return files;
		}
	}

	// 把列表中内容保存到文件
	private void saveListToFile(File[] files) {
		BufferedWriter bf = null;
		try {
			bf = new BufferedWriter(new FileWriter(userInfro));
			for (int i = 0; i < files.length; i++) {
				bf.write(files[i] + "\n");
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				bf.flush();
				bf.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	// 从文件中读取列表对象
	private void readFileToList() {
		BufferedReader br = null;
		try {
			if (!userInfro.exists()) {
				userInfro.createNewFile();
			}
			if (userInfro.exists()) {
				br = new BufferedReader(new FileReader(userInfro));
				String filePath;
				for (int i = 1; (filePath = br.readLine()) != null; i++) {
					fileDirection.addElement(new File(filePath));
					fileName.addElement(i
							+ ". "
							+ filePath
									.substring(filePath.lastIndexOf('\\') + 1));
				}
				System.out.println("读写完成................");
			}
		} catch (IOException e) {

			e.printStackTrace();
		} finally {
			try {
				br.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	// 把文件添加到列表
	public void AutoAddFileToList() {
		list.setListData(fileName);
		popupList.setListData(fileName);
		randomPodePlayer(fileName.size());
	}

	// 把文件添加到列表
	public void addList(File[] file) {

		System.out.println(file.length);
		System.out.println(fileName.size());
		for (int i = fileName.size(); i < file.length; i++) {
			fileName.add(i, i + 1 + ". " + file[i].getName());
			fileDirection.add(i, file[i]);
		}
		popupList.setListData(fileName);
		list.setListData(fileName);
		list.setSelectedIndex(0);
		fileName.trimToSize();
		fileDirection.trimToSize();

	}

	// 从列表中删除文件
	public void removeFile(int fileIndex, boolean ifAll) {

		if ((fileIndex < fileName.size()) && !ifAll && fileIndex != -1) {
			fileName.removeElementAt(fileIndex);
			fileDirection.removeElementAt(fileIndex);

		} else if (fileIndex != -1) {
			fileName.clear();
			fileDirection.clear();
		}
		list.setListData(fileName);
		popupList.setListData(fileName);
		list.setSelectedIndex(fileIndex);
		System.out.println("用户删除了下标为" + fileIndex);
		// saveListToFile((File[]) fileDirection.toArray());
		list.updateUI();
	}

	// 生成托盘
	private void initSystemTray() {
		System.out.println("正在生成托盘...");
		SystemTray tray = SystemTray.getSystemTray();
		Image image = Toolkit.getDefaultToolkit().getImage("img/icon.png"); // getClass.getResource("");
		this.addWindowListener(new WindowAdapter() {
			public void windowIconified(WindowEvent e) {
				dispose();
			}
		});
		PopupMenu popupMenu = new PopupMenu();

		MenuItem exitItem_exit = new MenuItem("退出");

		exitItem_exit.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				try {
					System.exit(0);
				} catch (Exception ex) {
					ex.printStackTrace();
				}
			}
		});
		popupMenu.add(exitItem_playOrPause_SystemTray);
		popupMenu.add(exitItem_stop_SystemTray);
		popupMenu.add(exitItem_exit);

		TrayIcon trayIcon = new TrayIcon(image, "java播放器", popupMenu);
		trayIcon.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				if (e.getClickCount() == 2) {
					setExtendedState(JFrame.NORMAL);
					setVisible(true);
				}
			}
		});
		try {
			tray.add(trayIcon);
		} catch (AWTException e) {
			System.err.println(e);
		}

	}

	// 更换标题栏图标
	public void changWindowIcon() {
		System.out.println("正在更换标题图标");
		try {
			File imagefile = new File("img/icon.png");
			URL url = imagefile.toURI().toURL();
			Image image = this.getToolkit().getImage(url);
			this.setIconImage(image);
		} catch (Exception s) {
			s.printStackTrace();
		}
	}

	// 程序入口
	public static void main(String[] aegs) {
		System.out.println("程序正在初始化! 请稍等......");
		JFrame.setDefaultLookAndFeelDecorated(true);
		JDialog.setDefaultLookAndFeelDecorated(true);

		MusicPlayer myPlayer = new MusicPlayer();

		System.out.println("初始化窗口完成!正在显示");
		myPlayer.setVisible(true);

	}

	// 类用于处理右键事件
	class RightMouseListener extends MouseAdapter {
		boolean flag = true;

		public void mousePressed(MouseEvent e) {
			super.mousePressed(e);
			int mods = e.getModifiers();
			if ((mods & 4) != 0 && (e.getSource() == visual)
					|| (e.getSource() == panel_view)) {
				popupMenuList.add(menuItem_paly_Popup);
				popupMenuList.add(menuItem_stop_Popup);
				popupMenuList.add(menuItem_controlPlayer);
				popupMenuList.add(menuItem_allScreen);
				menuItem_controlPlayer.add(menuItem_skinForwind_Popup);
				menuItem_controlPlayer.add(menuItem_rewind_Popup);
				if (e.getSource() == visual) {
					popupMenuList.show(visual, e.getX(), e.getY());
				}
				if ((mods & 4) != 0 && e.getSource() == panel_view) {
					popupMenuList.show(panel_view, e.getX(), e.getY());
				}
			} else if ((mods & 4) != 0 && e.getSource() == list) {
				popupMenuAll.add(menuItem_playSelect);
				popupMenuAll.add(menuItem_delete);
				popupMenuAll.add(menuItem_Addfile);
				popupMenuAll.add(menuItem_deleteAll);
				popupMenuAll.show(list, e.getX(), e.getY());
			} else if (e.getClickCount() == 2 && visual != null
					&& e.getSource() == visual) {
				if (flag) {
					fullScreenView();
					flag = false;
				} else {
					originalView();
					flag = true;
				}

			} else if (e.getClickCount() == 1 && visual != null
					&& e.getSource() == visual) {
				if (player != null)
					if (tempPause && e.getClickCount() <= 1) {
						pauseMedia();
						tempPause = false;
					} else {
						if (pauseTime != null) {
							pauseToPlayer();
							tempPause = true;
						}
					}
			}
		}
	}

	// 进入全屏
	private void fullScreenView() {
		AllScreenOrOriginal = true;
		getFrameInfor();
		Toolkit tk = Toolkit.getDefaultToolkit();
		Dimension fullSize = tk.getScreenSize();
		getRootPane().setWindowDecorationStyle(0);
		setSize(fullSize);
		setLocation(0, 0);
		remove(menubar);
		remove(panel_down);
		getContentPane().setSize(fullSize);
		setSize(fullSize);
		contentPane.remove(splitpane);
		this.setAlwaysOnTop(true);
		getContentPane().add(visual, BorderLayout.CENTER);
		validate();
		System.out.println("用户选择全屏!");
	}

	// 返回全屏前的状态
	private void originalView() {
		setFrameOrignal();
		getContentPane().remove(visual);
		getRootPane().setWindowDecorationStyle(1);
		add(menubar, BorderLayout.NORTH);
		this.setAlwaysOnTop(false);
		contentPane.add(panel_down, BorderLayout.SOUTH);
		contentPane.add(splitpane, BorderLayout.CENTER);
		panel_view.add(visual, BorderLayout.CENTER);
		validate();
		System.out.println("用户退出全屏!");
	}

	// 暂停播放
	public void pauseMedia() {
		pauseTime = player.getMediaTime();
		playerOrPause = false;
		((ControlProgrecess) timeThread).stopThread();
		player.stop();
		panel_play.remove(but_pause);
		panel_play.add(but_play);
		panel_play.updateUI();
		System.out.println("暂停播放...........");

	}

	// 从暂停位置开始播放
	private void pauseToPlayer() {
		
		timeThread = new ControlProgrecess();
		playerOrPause = true;
		timeThread.start();
		player.start();
		panel_play.remove(but_play);
		panel_play.add(but_pause);
		panel_play.updateUI();
		System.out.println("继续播放...........");
	}

	// 获取全屏前的窗口的大小,位置
	public void getFrameInfor() {
		width = getWidth();
		height = getHeight();
		x = getX();
		y = getY();
	}

	// 设置还原全屏时保存的大小和位置
	public void setFrameOrignal() {
		setSize(width, height);
		setLocation(x, y);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -