2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩108頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  主類MUSICPLAYER類:</p><p>  import java.util.*;</p><p>  import javax.swing.JSlider;</p><p>  import java.awt.BorderLayout;</p><p>  import java.awt.FlowLayout;

2、</p><p>  import java.awt.Point;</p><p>  import java.awt.event.ActionEvent;</p><p>  import java.awt.event.ActionListener;</p><p>  import java.awt.event.MouseAdapter;

3、</p><p>  import java.awt.event.MouseEvent;</p><p>  import java.io.BufferedOutputStream;</p><p>  import java.io.File;</p><p>  import java.io.FileInputStream;</p&g

4、t;<p>  import java.io.FileNotFoundException;</p><p>  import java.io.FileOutputStream;</p><p>  import java.io.IOException;</p><p>  import java.io.ObjectInputStream;</p&

5、gt;<p>  import java.io.ObjectOutputStream;</p><p>  import java.io.Serializable;</p><p>  import javax.media.ControllerEvent;</p><p>  import javax.media.ControllerListener;

6、</p><p>  import javax.media.EndOfMediaEvent;</p><p>  import javax.media.Manager;</p><p>  import javax.media.MediaLocator;</p><p>  import javax.media.NoPlayerExcepti

7、on;</p><p>  import javax.media.Player;</p><p>  import javax.media.PrefetchCompleteEvent;</p><p>  import javax.media.Time;</p><p>  import javax.swing.ButtonGroup;<

8、;/p><p>  import javax.swing.DefaultListModel;</p><p>  import javax.swing.ImageIcon;</p><p>  import javax.swing.JButton;</p><p>  import javax.swing.JFileChooser;</p&

9、gt;<p>  import javax.swing.JFrame;</p><p>  import javax.swing.JList;</p><p>  import javax.swing.JMenu;</p><p>  import javax.swing.JMenuBar;</p><p>  import j

10、avax.swing.JMenuItem;</p><p>  import javax.swing.JOptionPane;</p><p>  import javax.swing.JPanel;</p><p>  import javax.swing.JRadioButtonMenuItem;</p><p>  import jav

11、ax.swing.JScrollBar;</p><p>  import javax.swing.JScrollPane;</p><p>  import javax.swing.filechooser.FileNameExtensionFilter;</p><p>  public class MusicPlayer implements ActionLis

12、tener, Serializable,ControllerListener</p><p><b>  {</b></p><p>  private static final long serialVersionUID = 1L;</p><p>  private JFrame frame = null;</p><p

13、>  private JPanel controlPanel = null;</p><p>  private JButton btnPlay = null;</p><p>  private JButton btnPre = null;</p><p>  private JButton btnNext = null;</p><p&

14、gt;  private JScrollPane listPane = null;</p><p>  private JList list = null;</p><p>  private DefaultListModel listModel = null;</p><p>  private JMenuBar menubar = null;</p>

15、<p>  private JMenu menuFile = null, menuAbout = null, menuMode = null;</p><p>  private JMenuItem itemOpen, itemOpens, itemExit, itemAbout;</p><p>  private JRadioButtonMenuItem itemSing

16、le, itemSequence ,itemRandom;</p><p>  private ListItem currentItem = null;</p><p>  private static Player player = null;</p><p>  private boolean isPause = false;</p><p&

17、gt;  private int mode;</p><p>  private int currentIndex;</p><p>  private ImageIcon iconPlay = new ImageIcon("d:\\1.jpg");</p><p>  private ImageIcon iconPre = new ImageI

18、con("d:\\3.jpg");</p><p>  private ImageIcon iconNext = new ImageIcon("d:\\2.jpg");</p><p>  private ImageIcon iconPause = new ImageIcon("d:\\4.jpg");</p>&l

19、t;p>  public static void main(String[] args)</p><p><b>  {</b></p><p>  new MusicPlayer();</p><p><b>  }</b></p><p>  public MusicPlayer()<

20、;/p><p><b>  {</b></p><p><b>  init();</b></p><p><b>  }</b></p><p>  public void init()</p><p><b>  {</b><

21、/p><p>  frame = new JFrame();</p><p>  frame.setTitle("音樂(lè)播放器");</p><p>  frame.setSize(400, 300);</p><p>  frame.setResizable(false);</p><p>  fram

22、e.setLocationRelativeTo(null);</p><p>  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p><p>  menubar = new JMenuBar();</p><p>  menuFile = new JMenu("文件");</p

23、><p>  menuAbout = new JMenu("關(guān)于");</p><p>  menuMode = new JMenu("播放模式");</p><p>  itemOpen = new JMenuItem("添加文件");</p><p>  itemOpens = ne

24、w JMenuItem("添加文件夾");</p><p>  itemExit = new JMenuItem("退出");</p><p>  itemAbout = new JMenuItem("關(guān)于");</p><p>  itemOpen.addActionListener(this);<

25、/p><p>  itemOpens.addActionListener(this);</p><p>  itemExit.addActionListener(this);</p><p>  itemAbout.addActionListener(this);</p><p>  itemSequence = new JRadioButton

26、MenuItem("順序播放");</p><p>  itemSequence.setSelected(true);</p><p>  itemSingle = new JRadioButtonMenuItem("單曲循環(huán)");</p><p>  itemSequence.addActionListener(this);

27、</p><p>  itemRandom = new JRadioButtonMenuItem("隨機(jī)播放");</p><p>  itemRandom.addActionListener(this);</p><p>  itemSingle.addActionListener(this);</p><p>  Bu

28、ttonGroup bg = new ButtonGroup();</p><p>  bg.add(itemRandom);</p><p>  bg.add(itemSequence);</p><p>  bg.add(itemSingle);</p><p>  menuFile.add(itemOpen);</p>&

29、lt;p>  menuFile.add(itemOpens);</p><p>  menuFile.add(itemExit);</p><p>  menuAbout.add(itemAbout);</p><p>  menuMode.add(itemSequence);</p><p>  menuMode.add(itemSi

30、ngle);</p><p>  menuMode.add(itemRandom);</p><p>  menubar.add(menuFile);</p><p>  menubar.add(menuAbout);</p><p>  menubar.add(menuMode);</p><p>  frame.s

31、etJMenuBar(menubar);</p><p>  frame.setLayout(new BorderLayout());</p><p>  controlPanel = new JPanel();</p><p>  controlPanel.setLayout(new FlowLayout());</p><p>  btn

32、Play = new JButton(iconPlay);</p><p>  btnPre = new JButton(iconPre);</p><p>  btnNext = new JButton(iconNext);</p><p>  btnPlay.addActionListener(this);</p><p>  btnPr

33、e.addActionListener(this);</p><p>  btnNext.addActionListener(this);</p><p>  controlPanel.add(btnPre);</p><p>  controlPanel.add(btnPlay);</p><p>  controlPanel.add(bt

34、nNext);</p><p>  listPane = new JScrollPane();</p><p>  listModel = load();</p><p>  list = new JList(listModel);</p><p>  if (list.getSelectedIndex() == -1 &&

35、listModel.size() > 0)</p><p><b>  {</b></p><p>  currentItem = (ListItem) listModel.get(0);</p><p>  list.setSelectedIndex(0);</p><p>  currentIndex=0;&l

36、t;/p><p><b>  }</b></p><p>  listPane.getViewport().add(list);</p><p>  list.addMouseListener(new MouseAdapter()</p><p><b>  {</b></p><p

37、>  public void mouseClicked(MouseEvent e)</p><p><b>  {</b></p><p>  if (e.getClickCount() == 2)</p><p><b>  {</b></p><p>  if(player!=null)&

38、lt;/p><p><b>  {</b></p><p>  player.close();</p><p>  btnPlay.setIcon(iconPlay);</p><p><b>  }</b></p><p>  currentIndex = list.locat

39、ionToIndex(e.getPoint());</p><p>  currentItem = (ListItem) listModel.get(currentIndex);</p><p>  list.setSelectedIndex(currentIndex);</p><p><b>  play();</b></p>

40、<p><b>  }</b></p><p><b>  }</b></p><p><b>  });</b></p><p>  frame.setLayout(new BorderLayout());</p><p>  frame.add(controlP

41、anel, BorderLayout.NORTH);</p><p>  frame.add(listPane, BorderLayout.CENTER);</p><p>  frame.setVisible(true);</p><p><b>  };</b></p><p>  public void actio

42、nPerformed(ActionEvent e)</p><p><b>  {</b></p><p>  if (e.getSource() == itemOpen)</p><p>  {// add files</p><p>  JFileChooser jfc = new JFileChooser();&l

43、t;/p><p>  FileNameExtensionFilter filter = new FileNameExtensionFilter("音樂(lè)文件", "mp3", "wav");</p><p>  jfc.setFileFilter(filter);</p><p>  jfc.setFileSel

44、ectionMode(JFileChooser.FILES_ONLY);</p><p>  jfc.setMultiSelectionEnabled(true);</p><p>  if (jfc.showOpenDialog(frame) == JFileChooser.APPROVE_OPTION)</p><p><b>  {</b>

45、;</p><p>  File[] files = jfc.getSelectedFiles();</p><p>  for (File f : files)</p><p><b>  {</b></p><p>  ListItem item = new ListItem(f.getName(), f.getAb

46、solutePath());</p><p>  listModel.addElement(item);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  } </b></p><p>  els

47、e if (e.getSource() == itemOpens)</p><p>  {// add files in a directory</p><p>  JFileChooser jfc = new JFileChooser();</p><p>  jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ON

48、LY);</p><p>  if (jfc.showOpenDialog(frame) == JFileChooser.APPROVE_OPTION)</p><p><b>  {</b></p><p>  File directory = jfc.getSelectedFile();</p><p>  File

49、[] files = directory.listFiles(new java.io.FileFilter()</p><p><b>  {</b></p><p>  public boolean accept(File f)</p><p><b>  {</b></p><p>  if (

50、f.getName().toLowerCase().endsWith(".mp3")|| f.getName().toLowerCase().endsWith(".wav"))</p><p>  return true;</p><p>  return false;</p><p><b>  }</b&g

51、t;</p><p><b>  });</b></p><p>  for (File file : files)</p><p><b>  {</b></p><p>  ListItem item = new ListItem(file.getName(), file.getAbsolute

52、Path());</p><p>  listModel.addElement(item);</p><p><b>  }</b></p><p>  save(listModel);</p><p><b>  }</b></p><p><b>  } <

53、;/b></p><p>  else if (e.getSource() == itemExit)</p><p><b>  {</b></p><p>  System.exit(0);</p><p><b>  } </b></p><p>  else if

54、 (e.getSource() == itemAbout)</p><p><b>  {</b></p><p>  JOptionPane.showMessageDialog(frame, "作者:陸鑫");</p><p><b>  } </b></p><p>  el

55、se if (e.getSource() == btnPlay)</p><p><b>  {</b></p><p>  // play or pause</p><p><b>  play();</b></p><p><b>  } </b></p>&

56、lt;p>  else if (e.getSource() == btnPre)</p><p><b>  {</b></p><p><b>  pre();</b></p><p><b>  } </b></p><p>  else if (e.getSourc

57、e() == btnNext)</p><p>  {// next music</p><p><b>  next();</b></p><p><b>  } </b></p><p>  else if (e.getSource() == itemSequence)</p>&

58、lt;p><b>  {</b></p><p><b>  mode = 0;</b></p><p><b>  } </b></p><p>  else if (e.getSource() == itemSingle)</p><p><b>  {&l

59、t;/b></p><p><b>  mode = 1;</b></p><p><b>  }</b></p><p>  else if (e.getSource() == itemRandom)</p><p><b>  {</b></p><

60、;p><b>  mode = 2;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  // play control</p><p><b>  /**</b></p><

61、;p><b>  * 播放</b></p><p><b>  */</b></p><p>  public void play()</p><p><b>  {</b></p><p>  if (btnPlay.getIcon() == iconPlay)<

62、/p><p><b>  {</b></p><p>  if (isPause)</p><p><b>  {</b></p><p>  player.start();</p><p>  System.out.println("暫停結(jié)束");</

63、p><p>  isPause = false;</p><p><b>  } </b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  try</b></p&g

64、t;<p><b>  {</b></p><p>  player = Manager.createPlayer(new MediaLocator("file:"+ currentItem.getPath()));</p><p>  player.addControllerListener(this); // 提取媒體內(nèi)容<

65、/p><p>  player.prefetch();</p><p><b>  } </b></p><p>  catch (NoPlayerException e1)</p><p><b>  {</b></p><p>  e1.printStackTrace();&

66、lt;/p><p><b>  } </b></p><p>  catch (IOException e1)</p><p><b>  {</b></p><p>  e1.printStackTrace();</p><p><b>  }</b>&l

67、t;/p><p><b>  }</b></p><p>  btnPlay.setIcon(iconPause);</p><p><b>  } </b></p><p><b>  else</b></p><p><b>  {</b

68、></p><p>  player.stop();</p><p>  isPause = true;</p><p>  System.out.println("暫停");</p><p>  btnPlay.setIcon(iconPlay);</p><p><b>  }&

69、lt;/b></p><p><b>  }</b></p><p>  public void next()</p><p><b>  {</b></p><p>  if (currentIndex == listModel.getSize() - 1)</p><p

70、><b>  {</b></p><p>  currentIndex = 0;</p><p><b>  } </b></p><p><b>  else</b></p><p><b>  {</b></p><p>

71、  currentIndex++;</p><p><b>  }</b></p><p>  currentItem = (ListItem) listModel.get(currentIndex);</p><p>  list.setSelectedIndex(currentIndex);</p><p>  Po

72、int p = list.indexToLocation(currentIndex);</p><p>  JScrollBar jScrollBar = listPane.getVerticalScrollBar();// 獲得垂直轉(zhuǎn)動(dòng)條</p><p>  jScrollBar.setValue(p.y);// 設(shè)置垂直轉(zhuǎn)動(dòng)條位置</p><p>  btnPl

73、ay.setIcon(iconPlay);</p><p>  if (player != null)</p><p>  player.close();</p><p>  isPause = false;</p><p><b>  play();</b></p><p><b> 

74、 }</b></p><p>  public void rand()</p><p><b>  {</b></p><p>  list.setSelectedIndex((int)(Math.random()%(listModel.getSize()-1)));</p><p>  Point p=li

75、st.indexToLocation((int)(Math.random()%(listModel.getSize()-1)));</p><p>  JScrollBar jScrollBar = listPane.getVerticalScrollBar();</p><p>  jScrollBar.setValue(p.y);</p><p>  btnPl

76、ay.setIcon(iconPlay);</p><p>  if (player != null)</p><p>  player.close();</p><p>  isPause = false;</p><p><b>  play();</b></p><p><b> 

77、 }</b></p><p>  public void pre()</p><p><b>  {</b></p><p>  if (currentIndex == 0)</p><p><b>  {</b></p><p>  currentIndex =

78、 listModel.getSize() - 1;</p><p><b>  } </b></p><p><b>  else</b></p><p><b>  {</b></p><p>  currentIndex--;</p><p><

79、;b>  }</b></p><p>  currentItem = (ListItem) listModel.get(currentIndex);</p><p>  list.setSelectedIndex(currentIndex);</p><p>  Point p = list.indexToLocation(currentIndex

80、);</p><p>  JScrollBar jScrollBar = listPane.getVerticalScrollBar();// 獲得垂直轉(zhuǎn)動(dòng)條</p><p>  jScrollBar.setValue(p.y);// 設(shè)置垂直轉(zhuǎn)動(dòng)條位置</p><p>  btnPlay.setIcon(iconPlay);</p><p>

81、;  if (player != null)</p><p><b>  {</b></p><p>  player.close();</p><p><b>  }</b></p><p>  isPause = false;</p><p><b>  pla

82、y();</b></p><p><b>  }</b></p><p>  // end play control</p><p>  public DefaultListModel load()</p><p><b>  {</b></p><p>  Fi

83、le file = new File("list.lst");</p><p>  DefaultListModel dlm = new DefaultListModel();</p><p>  if (file.exists())</p><p><b>  {</b></p><p><b

84、>  try</b></p><p><b>  {</b></p><p>  ObjectInputStream ois = new ObjectInputStream(</p><p>  new FileInputStream(file));</p><p>  Integer size = (

85、Integer) ois.readObject();</p><p>  if (size != 0)</p><p><b>  {</b></p><p>  for (int i = 0; i < size; i++)</p><p><b>  {</b></p><

86、;p>  ListItem item = (ListItem) ois.readObject();</p><p>  dlm.addElement(item);</p><p><b>  }</b></p><p><b>  }</b></p><p>  ois.close();<

87、;/p><p>  return dlm;</p><p><b>  } </b></p><p>  catch (FileNotFoundException e)</p><p><b>  {</b></p><p>  e.printStackTrace();</

88、p><p><b>  } </b></p><p>  catch (IOException e)</p><p><b>  {</b></p><p>  e.printStackTrace();</p><p><b>  } </b></p&

89、gt;<p>  catch (ClassNotFoundException e)</p><p><b>  {</b></p><p>  e.printStackTrace();</p><p><b>  }</b></p><p><b>  }</b>

90、</p><p>  return dlm;</p><p><b>  }</b></p><p>  public void save(DefaultListModel dlm)</p><p><b>  {</b></p><p><b>  try<

91、/b></p><p><b>  {</b></p><p>  ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream("list.lst")));</p><p>  Integer

92、 size = dlm.getSize();</p><p>  oos.writeObject(size);</p><p>  for (int i = 0; i < size; i++)</p><p><b>  {</b></p><p>  ListItem item = (ListItem) dlm.

93、get(i);</p><p>  oos.writeObject(item);</p><p><b>  }</b></p><p>  oos.close();</p><p><b>  } </b></p><p>  catch (Exception e)<

94、/p><p><b>  {</b></p><p>  e.printStackTrace();</p><p><b>  }</b></p><p><b>  }</b></p><p>  public void controllerUpdate(

95、ControllerEvent e)</p><p><b>  {</b></p><p>  if (e instanceof EndOfMediaEvent)</p><p><b>  {</b></p><p>  if (mode == 0)</p><p>&l

96、t;b>  {// 順序播放</b></p><p>  System.out.println("順序播放");</p><p><b>  next();</b></p><p><b>  } </b></p><p>  else if (mode ==

97、1)</p><p><b>  { // 單曲循環(huán)</b></p><p>  System.out.println("播放結(jié)束");</p><p>  player.setMediaTime(new Time(0));</p><p>  System.out.println("單曲循

98、環(huán)");</p><p>  player.start();</p><p><b>  }</b></p><p>  else if (mode == 2)</p><p><b>  {</b></p><p>  System.out.println(&qu

99、ot;隨機(jī)播放");</p><p><b>  rand();</b></p><p><b>  }</b></p><p><b>  return;</b></p><p><b>  }</b></p><p>

100、  // 當(dāng)提取媒體的內(nèi)容結(jié)束</p><p>  if (e instanceof PrefetchCompleteEvent)</p><p><b>  {</b></p><p>  System.out.println("開(kāi)始播放");</p><p>  player.start();&l

101、t;/p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  LISTITEM類<

102、;/b></p><p>  import java.io.Serializable;</p><p>  public class ListItem implements Serializable</p><p><b>  {</b></p><p>  private static final long se

103、rialVersionUID = 1L;</p><p>  private String name;</p><p>  private String path;</p><p>  public ListItem()</p><p><b>  {}</b></p><p>  public

104、ListItem(String name, String path)</p><p><b>  {</b></p><p>  this.name = name;</p><p>  this.path = path;</p><p><b>  }</b></p><p>

105、;  public String getName()</p><p><b>  {</b></p><p>  return name;</p><p><b>  }</b></p><p>  public void setName(String name)</p><p&

106、gt;<b>  {</b></p><p>  this.name = name;</p><p><b>  }</b></p><p>  public String getPath()</p><p><b>  {</b></p><p>  

107、return path;</p><p><b>  }</b></p><p>  public void setPath(String path)</p><p><b>  {</b></p><p>  this.path = path;</p><p><b&

108、gt;  }</b></p><p>  public String toString()</p><p><b>  {</b></p><p>  return name;</p><p><b>  }</b></p><p><b>  }<

109、;/b></p><p>  基于java的音樂(lè)播放器的設(shè)計(jì)</p><p>  摘要:在信息,技術(shù)高速發(fā)展的今天,多媒體技術(shù)也越來(lái)越受到人們的重視。文章對(duì)目前使用較多的音樂(lè)播放器作出較詳細(xì)的比較。通過(guò)閱讀多張文獻(xiàn),分析了一些音樂(lè)播放器的功能并考慮了怎樣能實(shí)現(xiàn)支持更多格式的音樂(lè)文件,怎樣能滿足使用者對(duì)播放器的需求。本文主要介紹了一個(gè)基于Java Applet來(lái)實(shí)現(xiàn)的音樂(lè)播放器的設(shè)計(jì)。

110、并對(duì)系統(tǒng)開(kāi)發(fā)中涉及到的關(guān)鍵技術(shù)作了探討,簡(jiǎn)要分析介紹了Java技術(shù)和 Applet的工作原理,最后說(shuō)明系統(tǒng)需要實(shí)現(xiàn)的功能。</p><p>  關(guān)鍵詞:java;Applet;音樂(lè)播放器;</p><p><b>  前言</b></p><p>  近年來(lái),聽(tīng)音樂(lè)已成為人們生活的一部分,與此同時(shí),音樂(lè)播放器以其平易近人的價(jià)格也日趨普及,這大大

111、豐富了業(yè)余生活也緩解了工作壓力,但尚有諸多不足之處有待改進(jìn)日常生活中,我們?cè)诼?tīng)音時(shí),常感手動(dòng)操作甚是麻煩且想尋找某個(gè)音頻文件須從頭到尾逐個(gè)查看,這樣費(fèi)時(shí)費(fèi)力很是不便。音樂(lè)播放器的實(shí)現(xiàn)方法,采用口述音樂(lè)文件名的方式即可播放指定歌曲文件,避免了繁瑣的查找,亦使其更加人性化,實(shí)現(xiàn)了播放器的全自動(dòng)語(yǔ)音控制。 我將來(lái)要采用java Applet的多媒體技術(shù),設(shè)計(jì)出一個(gè)基于java Applet的音樂(lè)播放器。</p><p>

112、;  現(xiàn)在電腦上的音樂(lè)播放器百花齊放,以Winamp,F(xiàn)oobar2000,千千靜聽(tīng),酷狗和酷我音樂(lè)盒最流行。播放器最重要的參數(shù)當(dāng)屬支持的格式了,即使只圖個(gè)響,也需要有豐富的格式作為后盾。在此方面,千千靜聽(tīng)支持多種音頻格式,除了常見(jiàn)的MP3,WMA等,也支持APE,F(xiàn)LAC等無(wú)損壓縮格式,它一共支持三十多種音頻格式,是一個(gè)比較全能的播放器。Winamp也支持非常多的格式,但對(duì)APE格式的支持需要安裝對(duì)應(yīng)插件;除音頻格式外,Winamp還

113、支持一些常見(jiàn)的視頻格式,這個(gè)功能能為用戶帶來(lái)一些方便。Foobar2000支持的格式數(shù)量也差不多,但是對(duì)APE的支持仍然需要安裝插件。不過(guò)Foobar2000有一個(gè)特色功能,它支持直接讀取壓縮包里的音樂(lè)文件,從電騾上下載的APE完整碟通常都是打包的,如果用Foobar2000的這個(gè)功能就可以不解壓直接聽(tīng)歌了。</p><p>  相比之下,酷我音樂(lè)盒支持的格式就比較單一了,無(wú)論是網(wǎng)上搜索還是本地播放歌曲,都僅支持

114、MP3和WMA種格式??峁返谋憩F(xiàn)則稍微好點(diǎn),除了支持MP3和WMA之外,還支持APE和FLAC格式。而酷我音樂(lè)盒,則支持在線MV視頻的播放。在本文中我利用java語(yǔ)言設(shè)計(jì)的音樂(lè)播放器的功能跟千千靜聽(tīng),酷狗和酷我音樂(lè)盒,Winamp,F(xiàn)oobar2000的功能差不多,不過(guò)利用java設(shè)計(jì)的音樂(lè)播放器支持的音頻文件格式比它們豐富一點(diǎn)。如:WAP,AIFF,MIDI,AU,RMF等跨平臺(tái)功能比較強(qiáng)。</p><p>&

115、lt;b>  1 Java 技術(shù)</b></p><p>  Java技術(shù)已經(jīng)成為當(dāng)今Internet應(yīng)用開(kāi)發(fā)的核心與主流技術(shù)。這一方面是因?yàn)閖ava語(yǔ)言具有面向?qū)ο?可移植性,強(qiáng)壯性與安全性等優(yōu)良特征,另一方面也由于java技術(shù)對(duì)各個(gè)層次的分布式應(yīng)用(包括電器設(shè)備的嵌入式計(jì)算,桌面計(jì)算與企業(yè)級(jí)計(jì)算)都提供了全面系統(tǒng)的方法與技術(shù)。因此,目前java已經(jīng)從單純的程序設(shè)計(jì)語(yǔ)言發(fā)展成為支撐Intern

116、et計(jì)算的 大技術(shù)體系,進(jìn)入了發(fā)展與應(yīng)用的高級(jí)階段。</p><p><b>  1.1java語(yǔ)言</b></p><p>  對(duì)于都數(shù)程序設(shè)計(jì)語(yǔ)言,其程序運(yùn)行要么采用編譯執(zhí)行,要么采用解釋執(zhí)行的方式。而java語(yǔ)言的特殊之處在于,程序運(yùn)行既要經(jīng)過(guò)編譯又要進(jìn)行解釋,如圖1-1所示。首先,java程序由編譯器進(jìn)行編譯,產(chǎn)生了一種中間代碼,稱為java字節(jié)碼(java

117、 bytecodes)。字節(jié)碼是java虛擬機(jī)的代碼,是與平臺(tái)無(wú)關(guān)的中性代碼,因此不能在各種計(jì)算機(jī)平臺(tái)上直接運(yùn)行,必須在JVM上運(yùn)行。Java解釋器是JVM的實(shí)現(xiàn),它把字節(jié)碼轉(zhuǎn)換為底層平臺(tái)的機(jī)器碼,使Java程序最終得以運(yùn)行。無(wú)論是Application還是嵌入式在瀏覽器中的Applet,都需要通過(guò)解釋器才能運(yùn)行。</p><p>  圖1-1 Java 語(yǔ)言的運(yùn)行</p><p>  1

118、.2 Java的特征</p><p>  Java是一種”簡(jiǎn)單”(simple),面向?qū)ο螅╫bject oriented),分布式(distributed),解釋性(interpreted),健壯(orbust),安全(secure),體系結(jié)構(gòu)中立(architecture neutral),可移植性(portable),高性能(high performance),多線程(multithreaded),和動(dòng)態(tài)(

119、dynamic)“的編程語(yǔ)言。</p><p>  1)簡(jiǎn)單性:Java語(yǔ)言語(yǔ)法和語(yǔ)義都比較單純,,容易學(xué)習(xí)和使用。</p><p>  2)面向?qū)ο?作為一種面向?qū)ο蟮木幊陶Z(yǔ)言,Java不僅最為“純潔”,同時(shí),它對(duì)面向?qū)ο蠓椒ǖ闹С肿顬槿?。另?Java通過(guò)抽象類和接口(interface)支持面向的多態(tài)性要求,既一個(gè)對(duì)外接口,多種內(nèi)部實(shí)現(xiàn)。</p><p> 

120、 3)分布式特征:Java實(shí)現(xiàn)兩種層次上的分布。(1)數(shù)據(jù)分布支持:通過(guò)java的URL類,Java程序可以訪問(wèn)網(wǎng)絡(luò)撒謊那個(gè)的各類信息資源。訪問(wèn)方式完全類似于本地文件系統(tǒng)。(2)操作分布支持:java通過(guò)嵌在WWW頁(yè)面中的Applet(小應(yīng)用程序)將計(jì)算從服務(wù)器分布至客戶機(jī)。Applet由WWW瀏覽器在客戶端執(zhí)行,從而避免了網(wǎng)絡(luò)擁擠,提高了系統(tǒng)效率。</p><p>  4)java的解釋性:運(yùn)行Java程序需

121、要解釋器。程序被編譯為成為字節(jié)代碼的Java虛擬機(jī)代碼。字節(jié)代碼與機(jī)器無(wú)關(guān),可以在任何有Java解釋器的機(jī)器上運(yùn)行。</p><p>  5)健壯性:Java提供自動(dòng)垃圾收集來(lái)進(jìn)行內(nèi)存管理,防止程序員在管理內(nèi)存時(shí)容易產(chǎn)生的錯(cuò)誤。</p><p>  6)安全性:在發(fā)分布式環(huán)境中,安全性是一個(gè)十分重要的問(wèn)題。Java在語(yǔ)言和運(yùn)行環(huán)境中引入了多級(jí)安全措施,其采用的主要安全機(jī)制有:</p&

122、gt;<p>  (1)內(nèi)存分配及布局由Java運(yùn)行系統(tǒng)規(guī)定。</p><p>  (2)運(yùn)行系統(tǒng)執(zhí)行基于數(shù)字簽名技術(shù)的代碼認(rèn)證,字節(jié)碼驗(yàn)證與代碼訪問(wèn)權(quán)限控制的。</p><p>  7)體系結(jié)構(gòu)中立:Java語(yǔ)言的設(shè)計(jì)不是針對(duì)某種具體平臺(tái)結(jié)構(gòu)的。</p><p>  8)可移植性:Java是迄今為止對(duì)可移植性支持最佳的編程語(yǔ)言。Java的最大特點(diǎn)是“

123、一次編程,處處運(yùn)行”。</p><p>  9)高性能:Java語(yǔ)言雖然采取字節(jié)碼解釋運(yùn)行方式,但由于字節(jié)碼與機(jī)器碼十分接近,使得字節(jié)碼到機(jī)器碼的轉(zhuǎn)換十分快捷。</p><p>  10)多線性:線程是比進(jìn)程更小,更為經(jīng)濟(jì)的并發(fā)執(zhí)行單位,它與進(jìn)程的主要差異在于它不擁有單獨(dú)的資源,而是與其他線程共享所屬進(jìn)程的資源。</p><p>  11)動(dòng)態(tài)性:Java的動(dòng)態(tài)性是

124、其面向?qū)ο笤O(shè)計(jì)的延伸。</p><p>  2 Java Applet概念</p><p>  Applet(小應(yīng)用程序)是Java與Web相結(jié)合而引入的一種重要的Java應(yīng)用形式,它不僅使Web頁(yè)具有動(dòng)畫(huà),聲音,圖像和其他特殊效果,更重要的是可以使Web頁(yè)能夠與用戶動(dòng)態(tài)進(jìn)行交互,接收用戶的輸入,然后根據(jù)用戶的輸入作出不同的反應(yīng)。它是能夠嵌入到HTML頁(yè)面中,并能夠在瀏覽器中運(yùn)行的Java

125、類。Applet自身不能運(yùn)行,必須嵌入在其他應(yīng)用程序(例如 Web 瀏覽器或Java Appletviewer)中運(yùn)行。Applet類提供了從制定的URL獲取圖像和聲音的方法,使Applet可以很方便地 實(shí)現(xiàn)多媒體功能。當(dāng)圖像數(shù)據(jù)通過(guò)網(wǎng)絡(luò)下載時(shí),由于受網(wǎng)絡(luò)帶寬 等因素的限制,用戶在瀏覽器中看到的一般 是漸漸增長(zhǎng)的圖像顯示過(guò)程。獲取指定URL上的聲音數(shù)據(jù),返回一個(gè)類型為AudioClip的對(duì)象,通過(guò)該對(duì)象可以實(shí)現(xiàn)聲音演播。</p&g

126、t;<p>  2.1 Applet 類</p><p>  生成 Applet要?jiǎng)?chuàng)建Applet類的子類,一個(gè)Applet的運(yùn)行為框架由Applet類來(lái)決定的。Applet類提供了從指定的URL獲取圖像和聲音的方法,使Applet可以很方便地實(shí)現(xiàn)多媒體功能的。</p><p>  要編寫(xiě)Applet小應(yīng)用程序,就必須繼承Applet類,并覆蓋其中必要的方法。Applet類為

127、applet提供了基本的框架結(jié)構(gòu)是applet和其運(yùn)行環(huán)境之間的標(biāo)準(zhǔn)接口。Web瀏覽器能夠自動(dòng)調(diào)用下列方法來(lái)控制applet小應(yīng)用程序的生成和運(yùn)行:</p><p>  init方法 Start 方法 stop 方法 destroy 方法</p><p>  3 設(shè)計(jì)本系統(tǒng)要用到的Java關(guān)鍵技術(shù)</p><p>  3.1在Applet中播放聲音的方法和步

128、驟</p><p>  在Java.Applet包中的Applet類和AudioClip接口提供了播放聲音的基本支持。以前計(jì)算機(jī)存儲(chǔ)聲音文件的格式有許多,目前Java只支持一種聲音文件格式有.au,.mid,.wav等。對(duì)于其他格式的文件,可以用相應(yīng)地工具軟件將它們轉(zhuǎn)換為.au或.mid等Java支持的文件。在Applet中播放聲音文件有兩種方法:</p><p>  (1)在Java的A

129、PI中,Applet類提供了一個(gè)方法play(),它可以直接根據(jù)URL地址來(lái)播放聲音。這個(gè)方法指定如下: </p><p>  Public void play(URL url);</p><p>  Public void play(URL url,string soundFile);&

130、lt;/p><p>  在第一種方法的定義中,參數(shù)url是保存聲音文件的絕對(duì)URL地址,即統(tǒng)一資源定位,它指定Web網(wǎng)上的一個(gè)聲音文件;在第二種方法定義中,參數(shù)URL是保存聲音文件的基地址,而參數(shù)soundFile是聲音文件的文件名。如果聲音文件與Applet的HTML文件在相同的目錄下,則可以通過(guò)使用getCodeBase()方法來(lái)獲得該聲音文件的基地址。如果Applet本身的URL地址為

131、 “http//www.Tsinghua.edu.cn/pro/”,則語(yǔ)句: </p><p>  Play(gatCodeBase(),“space.au”);</p><p><b>  等同于語(yǔ)句:</b></p><p>  Play(“http//www.tsinghua.edu.cn/pro/”,“space.au”);&l

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論