?? musicalarm.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 + -