01 /*
02 * <applet code="player.class" width="640" height="520"></applet>
04 */
05 import java.awt.*;
06 import java.awt.event.*;
07 import java.io.*;
08 import java.net.*;
09 import javax.swing.*;
10 import javax.media.*;
11 public class player extends JApplet
12 {
13 private Player player;
14 private File file;
15 public player()
16 {
17 setBackground(Color.black);
18 JPanel ps = new JPanel();
19 ps.setLayout(new FlowLayout(FlowLayout.RIGHT));
20 JButton select = new JButton("select"); JLabel label = new JLabel("Select file...");
21 select.addActionListener(new ActionListener() // обработка нажатия кнопки
22 {
23 public void actionPerformed(ActionEvent ae)
24 {
25 openFile();
26 createPlayer();
27 }
28 });
29 ps.add(label); ps.add(select);
30 getContentPane().add(ps, BorderLayout.NORTH);
31 show();
32 }
33 private void openFile()
34 {
35 JFileChooser fileChooser = new JFileChooser();
36 fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
37 int result = fileChooser.showOpenDialog(this);
38 if(result == JFileChooser.CANCEL_OPTION){file = null;}
39 else{file = fileChooser.getSelectedFile();}
40 }
41 private void createPlayer() // пытаемся создать плеер
42 {
43 if(file == null){return;}
44 try
45 {
46 player = Manager.createPlayer(file.toURL());
47 player.addControllerListener(new EventHandler());
48 label.setText("Playing : " + file.getName()); player.start();
49 }
50 catch (Exception e){JOptionPane.showMessageDialog(this, "Invalid file or location",
"Error loading file", JOptionPane.ERROR_MESSAGE);}
51 }
52 private void removePreviousPlayer() // удаляем предыдущий плеер
53 {
54 if(player == null){return;}
55 Component vc = player.getVisualComponent();
56 Component cpc = player.getControlPanelComponent();
57 Container c = getContentPane();
58 if(visual != null){c.remove(vc);}
59 if(control != null){c.remove(cpc);}
60 }
61 public static void main(String args[])
62 {
63 JApplet applet = new player();
64 JFrame frame = new JFrame("Player by Cupoma_140417");
65 frame.addWindowListener(new WindowAdapter()
66 {
67 public void windowClosing(WindowEvent we){System.exit(0);}
68 });
69 frame.add(applet);
70 frame.setSize(640, 520);
71 applet.init();
72 applet.start();
73 frame.setVisible(true);
74 }
75 private class EventHandler implements ControllerListener // обрабатываем событие
76 {
77 public void controllerUpdate(ControllerEvent ce) // контролируем обновление
78 {
79 if(ce instanceof RealizeCompleteEvent) // если событие полностью реализовано
80 {
81 Container c = getContentPane();
82 Component vc = player.getVisualComponent();
83 if(vc != null){c.add(vc, BorderLayout.CENTER);}
84 Component cpc = player.getControlPanelComponent();
85 if(cpc != null){c.add(cpc, BorderLayout.SOUTH);}
86 c.doLayout();
87 }
88 }
89 }
90 public Insets getInsets(){return new Insets(2, 2, 2, 2);}
91 }
рис.5