JavaSoundpublic class JavaSound extends JPanel implements Runnable, ChangeListenerThe Java Sound Samples : MidiSynth, Juke, CapturePlayback, Groove. |
Fields Summary |
---|
Vector | demos | JTabbedPane | tabPane | int | width | int | height | int | index |
Constructors Summary |
---|
public JavaSound(String audioDirectory)
setLayout(new BorderLayout());
JMenuBar menuBar = new JMenuBar();
if (JavaSoundApplet.applet == null) {
JMenu fileMenu = (JMenu) menuBar.add(new JMenu("File"));
JMenuItem item = (JMenuItem) fileMenu.add(new JMenuItem("Exit"));
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { System.exit(0); }
});
}
JMenu options = (JMenu) menuBar.add(new JMenu("Options"));
JMenuItem item = (JMenuItem) options.add(new JMenuItem("Applet Info"));
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { showInfoDialog(); }
});
add(menuBar, BorderLayout.NORTH);
tabPane.addChangeListener(this);
EmptyBorder eb = new EmptyBorder(5,5,5,5);
BevelBorder bb = new BevelBorder(BevelBorder.LOWERED);
CompoundBorder cb = new CompoundBorder(eb,bb);
JPanel p = new JPanel(new BorderLayout());
p.setBorder(new CompoundBorder(cb,new EmptyBorder(0,0,90,0)));
final Juke juke = new Juke(audioDirectory);
p.add(juke);
demos.add(juke);
tabPane.addTab("Juke Box", p);
new Thread(this).start();
add(tabPane, BorderLayout.CENTER);
|
Methods Summary |
---|
public void | close()
((ControlContext) demos.get(index)).close();
| public java.awt.Dimension | getPreferredSize()
return new Dimension(width, height);
| public static void | main(java.lang.String[] args)
try {
if (MidiSystem.getSequencer() == null) {
System.err.println("MidiSystem Sequencer Unavailable, exiting!");
System.exit(1);
} else if (AudioSystem.getMixer(null) == null) {
System.err.println("AudioSystem Unavailable, exiting!");
System.exit(1);
}
} catch (Exception ex) { ex.printStackTrace(); System.exit(1); }
String media = "media";
if (args.length > 0) {
File file = new File(args[0]);
if (file == null && !file.isDirectory()) {
System.out.println("usage: java JavaSound audioDirectory");
} else {
media = args[0];
}
}
final JavaSound demo = new JavaSound(media);
JFrame f = new JFrame("Java Sound Demo");
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {System.exit(0);}
public void windowDeiconified(WindowEvent e) { demo.open(); }
public void windowIconified(WindowEvent e) { demo.close(); }
});
f.getContentPane().add("Center", demo);
f.pack();
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
f.setLocation(d.width/2 - demo.width/2, d.height/2 - demo.height/2);
f.setSize(new Dimension(demo.width, demo.height));
f.setVisible(true);
| public void | open()
((ControlContext) demos.get(index)).open();
| public void | run()Lazy load the tabbed pane with CapturePlayback, MidiSynth and Groove.
EmptyBorder eb = new EmptyBorder(5,5,5,5);
BevelBorder bb = new BevelBorder(BevelBorder.LOWERED);
CompoundBorder cb = new CompoundBorder(eb,bb);
JPanel p = new JPanel(new BorderLayout());
p.setBorder(new CompoundBorder(cb,new EmptyBorder(0,0,90,0)));
CapturePlayback capturePlayback = new CapturePlayback();
demos.add(capturePlayback);
p.add(capturePlayback);
tabPane.addTab("Capture/Playback", p);
MidiSynth midiSynth = new MidiSynth();
demos.add(midiSynth);
tabPane.addTab("Midi Synthesizer", midiSynth);
p = new JPanel(new BorderLayout());
p.setBorder(new CompoundBorder(cb,new EmptyBorder(0,0,5,20)));
Groove groove = new Groove();
demos.add(groove);
p.add(groove);
tabPane.addTab("Groove Box", p);
| public static void | showInfoDialog()
final String msg =
"When running the Java Sound demo as an applet these permissions\n" +
"are necessary in order to load/save files and record audio : \n\n"+
"grant { \n" +
" permission java.io.FilePermission \"<<ALL FILES>>\", \"read, write\";\n" +
" permission javax.sound.sampled.AudioPermission \"record\"; \n" +
" permission java.util.PropertyPermission \"user.dir\", \"read\";\n"+
"}; \n\n" +
"The permissions need to be added to the .java.policy file.";
new Thread(new Runnable() {
public void run() {
JOptionPane.showMessageDialog(null, msg, "Applet Info", JOptionPane.INFORMATION_MESSAGE);
}
}).start();
| public void | stateChanged(javax.swing.event.ChangeEvent e)
close();
System.gc();
index = tabPane.getSelectedIndex();
open();
|
|