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

📄 musicalarm.java

📁 音乐闹钟提醒。可以选择“.wav”“.au”格式的音乐文件
💻 JAVA
字号:
package 闹钟;
import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Graphics;
import java.io.File;
import java.net.MalformedURLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.*;
import javax.swing.text.DefaultStyledDocument;

import java.io.*;
import sun.audio.*;
import java.awt.*;

public class MusicAlarm extends JFrame implements Runnable{
	private JLabel dateLabel,hourLabel,minuteLabel,secondLabel,currentLabel,closeLabel;
	private JButton confirmButton,openButton;
	private JTextField musicField,dateField,hourField,minuteField,secondField;
	private JTextArea remainderArea;
	private int h=0,f=0,m=0,r=0;//表示当前时间
	private int date,hour,minute,second;//表示设定的时间
	private boolean fo = false,foo=false;
	private AudioStream sound;
	private JPanel panel_1,panel_2,panel_3,panel_4,panel_5,panel_6,mainPanel;
	private ImageIcon background = new ImageIcon("background.jpg");
	private Font font = new Font("微软雅黑",Font.BOLD,16);
	
	public MusicAlarm(){
		super("欢迎使用提醒功能");
		mainPanel = new JPanel();
		
		mainPanel.setLayout(new GridLayout(2,1));
		panel_1 = new JPanel(){
			private static final long serialVersionUID = 1L;
			protected void paintComponent(Graphics g)
				{
					g.drawImage(background.getImage(), 0, 0, null);
				}
		};
		panel_1.setLayout(new GridLayout(4,1));
		currentLabel = new JLabel();
		currentLabel.setForeground(Color.white);
		currentLabel.setFont(font);
		panel_1.add(currentLabel);
		
		closeLabel = new JLabel("              距离提醒时间:0日0时0分0秒");
		closeLabel.setForeground(Color.white);
		closeLabel.setFont(font);
		panel_1.add(closeLabel);
		
		panel_2 = new JPanel(){
			private static final long serialVersionUID = 1L;
			protected void paintComponent(Graphics g)
				{
					g.drawImage(background.getImage(), 0, 0, null);
				}
		};
		musicField = new JTextField(20);
		musicField.setBackground(Color.black);
		musicField.setForeground(Color.white);
		openButton = new JButton("选择提醒音乐");
		panel_2.add(musicField);
		panel_2.add(openButton);
		panel_1.add(panel_2);
		
		panel_3 = new JPanel(){
			private static final long serialVersionUID = 1L;
			protected void paintComponent(Graphics g)
				{
					g.drawImage(background.getImage(), 0, 0, null);
				}
		};
		dateLabel = new JLabel("日");
		dateLabel.setForeground(Color.white);
		dateField = new JTextField(4);
		dateField.setBackground(Color.black);
		dateField.setForeground(Color.white);
		hourLabel = new JLabel("时");
		hourLabel.setForeground(Color.white);
		hourField = new JTextField(4);
		hourField.setBackground(Color.black);
		hourField.setForeground(Color.white);
		minuteLabel = new JLabel("分");
		minuteLabel.setForeground(Color.white);
		minuteField = new JTextField(4);
		minuteField.setBackground(Color.black);
		minuteField.setForeground(Color.white);
		secondLabel = new JLabel("秒");
		secondLabel.setForeground(Color.white);
		secondField = new JTextField(4);
		secondField.setBackground(Color.black);
		secondField.setForeground(Color.white);
		confirmButton = new JButton("确定");
		dateLabel.setForeground(Color.white);
		panel_3.add(dateLabel);
		panel_3.add(dateField);
		panel_3.add(hourLabel);
		panel_3.add(hourField);
		panel_3.add(minuteLabel);
		panel_3.add(minuteField);
		panel_3.add(secondLabel);
		panel_3.add(secondField);
		panel_3.add(confirmButton);
	    
		panel_1.add(panel_3);
		confirmButton.addActionListener(new Confirm());
		openButton.addActionListener(new Open());
		
		mainPanel.add(panel_1);
		
		remainderArea = new JTextArea(3,20);
		remainderArea.setFont(new Font("仿宋",Font.BOLD,14));
		remainderArea.setBackground(Color.black);
		remainderArea.setForeground(Color.white);
		remainderArea.setEditable(true);
		mainPanel.add(new JScrollPane(remainderArea,
				JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
                JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS));
		
		
		
		add(mainPanel);
		this.setSize(400, 300);
		this.setBackground(Color.black);
		this.setAlwaysOnTop(false);
		this.setResizable(false);
		this.setVisible(true);
		
	
	}
	class Confirm implements ActionListener{
		public void actionPerformed(ActionEvent event){
			if(confirmButton.getText().equals("确定")){
				try{
					r = Integer.parseInt(dateField.getText());
					h = Integer.parseInt(hourField.getText());
					f = Integer.parseInt(minuteField.getText());
					m = Integer.parseInt(secondField.getText());
					
					  if (1 <= h && h <= 31 && 0 <= h && h <= 23 && 0 <= f
						         && f <= 59 && 0 <= m && m <= 59) {
						        Date now = new Date();
						        SimpleDateFormat datel = new SimpleDateFormat("dd");
						        if (dateField.getText() == null || dateField.getText().equals("")) {
						         r = Integer.parseInt(datel.format(now));
						         dateField.setText(datel.format(now));
						        } else{
						         r = Integer.parseInt(dateField.getText());
						        }
						        fo = true;
						       } else{
						        JOptionPane.showMessageDialog(null, "输入时间错误");
						       }
				} catch (Exception e) {
					JOptionPane.showMessageDialog(null, "请输入正确的时间");
					}
			}else{
				try{
					fo = false;
					dateField.setEditable(true);
					hourField.setEditable(true);
					minuteField.setEditable(true);
					secondField.setEditable(true);
					remainderArea.setEditable(true);
					musicField.setEditable(true);
					confirmButton.setText("确定");
					sun.audio.AudioPlayer.player.stop(sound);
				}catch(Exception e){
					System.out.println("关闭");
					JOptionPane.showMessageDialog(null, "关闭");
				}
			}
		}
	}
	
	class Open implements ActionListener{
		public void actionPerformed(ActionEvent event){
			JFileChooser fileChooser = new JFileChooser(); // 实例化文件选择器
		     fileChooser
		       .setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); // 设置文件选择模式,此处为文件和目录均可
		     fileChooser.setCurrentDirectory(new File(".")); // 设置文件选择器当前目录
		     fileChooser
		       .setFileFilter(new javax.swing.filechooser.FileFilter() {
		        public boolean accept(File file) { // 可接受的文件类型
		         String name = file.getName().toLowerCase();
		         return name.endsWith(".wav")
		           || name.endsWith(".au")
		           || file.isDirectory();
		        }

		        public String getDescription() { // 文件描述
		         return "音乐文件(*.wav,*.au)";
		        }
		       }
		     );
		     if (fileChooser.showOpenDialog(MusicAlarm.this) == JFileChooser.APPROVE_OPTION) { // 弹出文件选择器,并判断是否点击了打开按钮
		      String fileName = fileChooser.getSelectedFile()
		        .getAbsolutePath(); // 得到选择文件或目录的绝对路径
		      musicField.setText(fileName);
		     }
		}
	}
	
	public void run() {
		   while (true) {
		    Date now = new Date();
		    currentLabel.setText("      当前时间: " + now.toString());
		    if (foo) {
		     if (h == 0||h - hour<0) {
		      h += 24;
		      r-=1;
		     }
		     if (f == 0||f - minute<0) {
		      f += 60;
		      h -= 1;
		     }
		     if (m == 0||m - second<0) {
		      m += 60;
		      f -= 1;
		     }
		     closeLabel.setText("              离闹铃时间: " + (r - date) + "日" + (h - hour)
		       + "时" + (f - minute) + "分" + (m - second-1) + "秒");
		     if(r<date)
		     {
		      foo=false;
		      closeLabel.setText("              离闹铃时间:0日0时0分0秒");
		     }else if(r<=date&&h<hour)
		     {
		      foo=false;
		      closeLabel.setText("              离闹铃时间:0日0时0分0秒");
		     }else if(r<=date&&h<=hour&f<minute)
		     {
		      foo=false;
		      closeLabel.setText("              离闹铃时间:0日0时0分0秒");
		     }else if(r<=date&&h<=hour&&f<=minute&&m<hour){
		      foo=false;
		      closeLabel.setText("              离闹铃时间:0日0时0分0秒");
		     }
		    }
		    if (fo) {
		     foo = true;
		     dateField.setEditable(false);
		     hourField.setEditable(false);
		     minuteField.setEditable(false);
		     secondField.setEditable(false);
		     remainderArea.setEditable(false);
		     musicField.setEditable(false);
		     confirmButton.setText("关闭");
		     SimpleDateFormat date2 = new SimpleDateFormat("dd"); // 封装 为了获取日期
		     SimpleDateFormat hour2 = new SimpleDateFormat("HH"); // 封装 为了获取小时
		     SimpleDateFormat minute2 = new SimpleDateFormat("mm"); // 封装 为了获取分钟
		     SimpleDateFormat second2 = new SimpleDateFormat("ss"); // 封装 为了获取秒钟
		     date = Integer.parseInt(date2.format(now)); // 获取日期
		     hour = Integer.parseInt(hour2.format(now)); // 获取小时
		     minute = Integer.parseInt(minute2.format(now)); // 获取分钟
		     second = Integer.parseInt(second2.format(now)); // 获取秒钟
		     if (date == r && hour == h && minute == f
		       && second == m) // 判断条件
		     {
		      try {
		    	  InputStream in = new FileInputStream(musicField.getText());
		    	  sound = new AudioStream(in);
		    	  sun.audio.AudioPlayer.player.start(sound); 
		          fo = false;
		          foo = false;
		      } catch (MalformedURLException e) {
		       e.printStackTrace();
		      }catch(IOException e){
		      }
		     }
		    }
		    try {
		     Thread.sleep(1000);
		    } catch (InterruptedException ie) {
		    }

		   }
		}
}

⌨️ 快捷键说明

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