<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Tukang Java Wannabe &#187; JConference</title>
	<atom:link href="http://tukangjava.wordpress.com/category/jconference/feed/" rel="self" type="application/rss+xml" />
	<link>http://tukangjava.wordpress.com</link>
	<description>Daripada nganggur mendingan ngoding</description>
	<lastBuildDate>Thu, 03 Jul 2008 02:34:10 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='tukangjava.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/bd92986f30fba4962f733e8b061465ab?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Tukang Java Wannabe &#187; JConference</title>
		<link>http://tukangjava.wordpress.com</link>
	</image>
			<item>
		<title>Membuat Aplikasi Video Conference dengan JMF bagian 3: Capture</title>
		<link>http://tukangjava.wordpress.com/2008/03/31/membuat-aplikasi-video-conference-dengan-jmf-bagian-3-capture/</link>
		<comments>http://tukangjava.wordpress.com/2008/03/31/membuat-aplikasi-video-conference-dengan-jmf-bagian-3-capture/#comments</comments>
		<pubDate>Mon, 31 Mar 2008 04:52:51 +0000</pubDate>
		<dc:creator>tukangjava</dc:creator>
				<category><![CDATA[JConference]]></category>

		<guid isPermaLink="false">http://tukangjava.wordpress.com/?p=32</guid>
		<description><![CDATA[Di post sebelum ini kita sudah membahas bagaimana memainkan multimedia dari local disk. Sekarang kita akan membahas bagaimana caranya untuk capture video dan audio dari web cam dan microphone dan menampilkannya di aplikasi kita.
Pertama, kita buat class untuk menangani format dari video dan audio kita.
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import javax.media.*;
import javax.media.format.*;
import javax.media.protocol.DataSource;
import javax.swing.*;
public class CaptureDeviceDialog extends [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tukangjava.wordpress.com&blog=2428649&post=32&subd=tukangjava&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Di post sebelum ini kita sudah membahas bagaimana memainkan multimedia dari local disk. Sekarang kita akan membahas bagaimana caranya untuk capture video dan audio dari web cam dan microphone dan menampilkannya di aplikasi kita.</p>
<p>Pertama, kita buat class untuk menangani format dari video dan audio kita.</p>
<p>import java.awt.*;<br />
import java.awt.event.*;<br />
import java.util.Vector;<br />
import javax.media.*;<br />
import javax.media.format.*;<br />
import javax.media.protocol.DataSource;<br />
import javax.swing.*;</p>
<p>public class CaptureDeviceDialog extends Dialog implements ActionListener, ItemListener {</p>
<p>boolean configurationChanged = false;<br />
Vector devices;<br />
Vector audioDevices;<br />
Vector videoDevices;<br />
Vector audioFormats;<br />
Vector videoFormats;<br />
Choice audioDeviceCombo;<br />
Choice videoDeviceCombo;<br />
Choice audioFormatCombo;<br />
Choice videoFormatCombo;</p>
<p>public CaptureDeviceDialog(Frame parent, String title, boolean mode) {<br />
super(parent, title, mode);<br />
init();<br />
}</p>
<p>private void init() {<br />
setSize(450, 180);<br />
Panel p = new Panel();<br />
p.setLayout(null);</p>
<p>Label l1 = new Label(&#8220;Audio Device(s)&#8221;);<br />
Label l2 = new Label(&#8220;Video Device(s)&#8221;);<br />
Label l3 = new Label(&#8220;Audio Format(s)&#8221;);<br />
Label l4 = new Label(&#8220;Video Format(s)&#8221;);<br />
audioDeviceCombo = new Choice();<br />
videoDeviceCombo = new Choice();<br />
audioFormatCombo = new Choice();<br />
videoFormatCombo = new Choice();</p>
<p>Button OKbutton = new Button(&#8220;OK&#8221;);<br />
Button cancelButton = new Button(&#8220;Cancel&#8221;);</p>
<p>p.add(l1);<br />
l1.setBounds(5, 5, 100, 20);<br />
p.add(audioDeviceCombo);<br />
audioDeviceCombo.setBounds(115, 5, 300, 20);<br />
p.add(l3);<br />
l3.setBounds(5, 30, 100,20);<br />
p.add(audioFormatCombo);<br />
audioFormatCombo.setBounds(115, 30, 300,20);<br />
p.add(l2);<br />
l2.setBounds(5, 55, 100, 20);<br />
p.add(videoDeviceCombo);<br />
videoDeviceCombo.setBounds(115, 55, 300, 20);<br />
p.add(l4);<br />
l4.setBounds(5, 80, 100, 20);<br />
p.add(videoFormatCombo);<br />
videoFormatCombo.setBounds(115, 80, 300, 20);<br />
p.add(OKbutton);<br />
OKbutton.setBounds(280, 115, 60, 25);<br />
p.add(cancelButton);<br />
cancelButton.setBounds(355, 115, 60, 25);</p>
<p>add(p, &#8220;Center&#8221;);<br />
audioDeviceCombo.addItemListener(this);<br />
videoDeviceCombo.addItemListener(this);<br />
OKbutton.addActionListener(this);<br />
cancelButton.addActionListener(this);</p>
<p>//get all the capture devices<br />
devices = CaptureDeviceManager.getDeviceList ( null );<br />
CaptureDeviceInfo cdi;<br />
if (devices!=null &amp;&amp; devices.size()&gt;0) {<br />
int deviceCount = devices.size();<br />
audioDevices = new Vector();<br />
videoDevices = new Vector();</p>
<p>Format[] formats;<br />
for ( int i = 0;  i &lt; deviceCount;  i++ ) {<br />
cdi = (CaptureDeviceInfo) devices.elementAt ( i );<br />
formats = cdi.getFormats();<br />
for ( int j=0;  j&lt;formats.length; j++ ) {<br />
if ( formats[j] instanceof AudioFormat ) {<br />
audioDevices.addElement(cdi);<br />
break;<br />
}<br />
else if (formats[j] instanceof VideoFormat ) {<br />
videoDevices.addElement(cdi);<br />
break;<br />
}<br />
}<br />
}</p>
<p>//populate the choices for audio<br />
for (int i=0; i&lt;audioDevices.size(); i++) {<br />
cdi  = (CaptureDeviceInfo) audioDevices.elementAt(i);<br />
audioDeviceCombo.addItem(cdi.getName());<br />
}</p>
<p>//populate the choices for video<br />
for (int i=0; i&lt;videoDevices.size(); i++) {<br />
cdi  = (CaptureDeviceInfo) videoDevices.elementAt(i);<br />
videoDeviceCombo.addItem(cdi.getName());<br />
}</p>
<p>displayAudioFormats();<br />
displayVideoFormats();</p>
<p>} // end if devices!=null &amp;&amp; devices.size&gt;0<br />
else {<br />
//no devices found or something bad happened.<br />
}<br />
}</p>
<p>void displayAudioFormats() {<br />
//get audio formats of the selected audio device and repopulate the audio format combo<br />
CaptureDeviceInfo cdi;<br />
audioFormatCombo.removeAll();</p>
<p>int i = audioDeviceCombo.getSelectedIndex();<br />
//i = -1 &#8211;&gt; no selected index</p>
<p>if (i!=-1) {<br />
cdi = (CaptureDeviceInfo) audioDevices.elementAt(i);<br />
if (cdi!=null) {<br />
Format[] formats = cdi.getFormats();<br />
audioFormats = new Vector();<br />
for (int j=0; j&lt;formats.length; j++) {<br />
audioFormatCombo.add(formats[j].toString());<br />
audioFormats.addElement(formats[j]);<br />
}<br />
}<br />
}<br />
}</p>
<p>void displayVideoFormats() {<br />
//get audio formats of the selected audio device and repopulate the audio format combo<br />
CaptureDeviceInfo cdi;<br />
videoFormatCombo.removeAll();</p>
<p>int i = videoDeviceCombo.getSelectedIndex();<br />
//i = -1 &#8211;&gt; no selected index</p>
<p>if (i!=-1) {<br />
cdi = (CaptureDeviceInfo) videoDevices.elementAt(i);<br />
if (cdi!=null) {<br />
Format[] formats = cdi.getFormats();<br />
videoFormats = new Vector();<br />
for (int j=0; j&lt;formats.length; j++) {<br />
videoFormatCombo.add(formats[j].toString());<br />
videoFormats.addElement(formats[j]);<br />
}<br />
}<br />
}<br />
}</p>
<p>public CaptureDeviceInfo getAudioDevice() {<br />
CaptureDeviceInfo cdi = null;<br />
if (audioDeviceCombo!=null) {<br />
int i = audioDeviceCombo.getSelectedIndex();<br />
cdi = (CaptureDeviceInfo) audioDevices.elementAt(i);<br />
}<br />
return cdi;<br />
}</p>
<p>public CaptureDeviceInfo getVideoDevice() {<br />
CaptureDeviceInfo cdi = null;<br />
if (videoDeviceCombo!=null) {<br />
int i = videoDeviceCombo.getSelectedIndex();<br />
cdi = (CaptureDeviceInfo) videoDevices.elementAt(i);<br />
}<br />
return cdi;<br />
}</p>
<p>public Format getAudioFormat() {<br />
Format format = null;<br />
if (audioFormatCombo!=null) {<br />
int i = audioFormatCombo.getSelectedIndex();<br />
format = (Format) audioFormats.elementAt(i);<br />
}<br />
return format;<br />
}</p>
<p>public Format getVideoFormat() {<br />
Format format = null;<br />
if (videoFormatCombo!=null) {<br />
int i = videoFormatCombo.getSelectedIndex();<br />
format = (Format) videoFormats.elementAt(i);<br />
}<br />
return format;<br />
}</p>
<p>public boolean hasConfigurationChanged() {<br />
return configurationChanged;<br />
}</p>
<p>public void actionPerformed(ActionEvent ae) {<br />
String command = ae.getActionCommand().toString();<br />
if (command.equals(&#8220;OK&#8221;)) {<br />
configurationChanged = true;<br />
}<br />
dispose();<br />
}</p>
<p>public void itemStateChanged(ItemEvent ie) {<br />
System.out.println(ie.getSource().toString());<br />
if (ie.getSource().equals(audioDeviceCombo))<br />
displayAudioFormats();<br />
else<br />
displayVideoFormats();</p>
<p>}<br />
}<br />
Itu adalah class untuk menangani user yang akan memilih format dari video dan audio yang akan di capture. Selanjutnya, kita tambahkan method capture pada JConference kita.</p>
<p>Pada action File&#8211;&gt;Capture, kita ubah</p>
<p>System.out.println(&#8220;Sementara&#8221;);</p>
<p>menjadi</p>
<p>capture();</p>
<p>Selanjutnya kita tambahkan method capture() dan method-method yang mendukungnya</p>
<p>void registerDevices() {<br />
CaptureDeviceDialog cdDialog = new<br />
CaptureDeviceDialog(this, &#8220;Capture Device&#8221;, true);<br />
cdDialog.setVisible(true);<br />
if (!cdDialog.hasConfigurationChanged())<br />
return;<br />
//configuration has changed, update variables.<br />
audioCDI = cdDialog.getAudioDevice();<br />
if (audioCDI!=null) {<br />
audioDeviceName = audioCDI.getName();<br />
System.out.println(&#8220;Audio Device Name: &#8221; + audioDeviceName);<br />
}<br />
videoCDI = cdDialog.getVideoDevice();<br />
if (videoCDI!=null) {<br />
videoDeviceName = videoCDI.getName();<br />
System.out.println(&#8220;Video Device Name: &#8221; + videoDeviceName);<br />
}<br />
//Get formats selected, to be used for creating DataSource<br />
videoFormat = cdDialog.getVideoFormat();<br />
audioFormat = cdDialog.getAudioFormat();<br />
}<br />
public synchronized void controllerUpdate(ControllerEvent event) {<br />
System.out.println(event.toString());<br />
if (event instanceof RealizeCompleteEvent) {<br />
Component comp;<br />
System.out.println(&#8220;Adding visual component&#8221;);<br />
if ((comp = dualPlayer.getVisualComponent()) != null)<br />
add (&#8220;Center&#8221;, comp);<br />
System.out.println(&#8220;Adding control panel&#8221;);<br />
if ((comp = dualPlayer.getControlPanelComponent()) != null)<br />
add(&#8220;South&#8221;, comp);<br />
validate();<br />
}<br />
}<br />
void capture() {<br />
if (audioCDI==null &amp;&amp; videoCDI==null)<br />
registerDevices();</p>
<p>try {<br />
if (!(audioCDI==null &amp;&amp; videoCDI==null)) {<br />
DataSource[] dataSources = new DataSource[2];<br />
System.out.println(&#8220;Creating data sources.&#8221;);<br />
dataSources[0] = Manager.createDataSource(audioCDI.getLocator());<br />
dataSources[1] = Manager.createDataSource(videoCDI.getLocator());<br />
DataSource ds = Manager.createMergingDataSource(dataSources);<br />
dualPlayer = Manager.createPlayer(ds);<br />
dualPlayer.addControllerListener(this);<br />
dualPlayer.start();<br />
}<br />
else<br />
System.out.println(&#8220;CDI not found.&#8221;);<br />
}<br />
catch (Exception e) {<br />
System.out.println(e.toString());<br />
}<br />
}</p>
<p>Post selanjutnya kita akan membahas tentang transmit receive paket-paket RTP (Real Time Protocol), protokol yang kita pakai untuk aplikasi kita.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/tukangjava.wordpress.com/32/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/tukangjava.wordpress.com/32/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tukangjava.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tukangjava.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tukangjava.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tukangjava.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tukangjava.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tukangjava.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tukangjava.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tukangjava.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tukangjava.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tukangjava.wordpress.com/32/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tukangjava.wordpress.com&blog=2428649&post=32&subd=tukangjava&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tukangjava.wordpress.com/2008/03/31/membuat-aplikasi-video-conference-dengan-jmf-bagian-3-capture/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/caf8c6538c3f700379a20ca80e776bbd?s=96&#38;d=identicon" medium="image">
			<media:title type="html">tukangjava</media:title>
		</media:content>
	</item>
		<item>
		<title>Membuat Aplikasi Video Conference dengan JMF bagian 2: Player</title>
		<link>http://tukangjava.wordpress.com/2008/03/30/membuat-aplikasi-video-conference-dengan-jmf-bagian-2-player/</link>
		<comments>http://tukangjava.wordpress.com/2008/03/30/membuat-aplikasi-video-conference-dengan-jmf-bagian-2-player/#comments</comments>
		<pubDate>Sun, 30 Mar 2008 17:29:33 +0000</pubDate>
		<dc:creator>tukangjava</dc:creator>
				<category><![CDATA[JConference]]></category>

		<guid isPermaLink="false">http://tukangjava.wordpress.com/?p=31</guid>
		<description><![CDATA[Di bagian 1 kita sudah membuat menu, sekarang kita akan membuat Player untuk memainkan media yang dipilih dari Menu File &#8211;&#62; Open
Kita membuat satu class yang bertugas untuk memainkan file. Class ini adalah class MediaPlayer. Berikut adalah source code nya:
import javax.media.*;
import javax.media.Manager;
import javax.media.Player;
import java.net.URL;
import javax.swing.JPanel;
import java.awt.*;
import java.io.IOException;
public class MediaPlayer extends JPanel {
public MediaPlayer(URL mediaURL) {
setLayout( [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tukangjava.wordpress.com&blog=2428649&post=31&subd=tukangjava&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Di bagian 1 kita sudah membuat menu, sekarang kita akan membuat Player untuk memainkan media yang dipilih dari Menu File &#8211;&gt; Open</p>
<p>Kita membuat satu class yang bertugas untuk memainkan file. Class ini adalah class MediaPlayer. Berikut adalah source code nya:</p>
<p>import javax.media.*;<br />
import javax.media.Manager;<br />
import javax.media.Player;<br />
import java.net.URL;<br />
import javax.swing.JPanel;<br />
import java.awt.*;<br />
import java.io.IOException;</p>
<p>public class MediaPlayer extends JPanel {</p>
<p>public MediaPlayer(URL mediaURL) {<br />
setLayout( new BorderLayout() );<br />
try {<br />
//Create a player to play the media specified in the URL<br />
Player thePlayer = Manager.createRealizedPlayer(mediaURL);<br />
Component video = thePlayer.getVisualComponent();      //Add visual component<br />
Component controls = thePlayer.getControlPanelComponent();  //Add audio component<br />
this.add(video, BorderLayout.CENTER);<br />
this.add(controls, BorderLayout.SOUTH);<br />
thePlayer.start();<br />
}<br />
catch (NoPlayerException noPlayerException){<br />
System.err.println( &#8220;No media player found&#8221; + noPlayerException );<br />
}<br />
catch (CannotRealizeException cannotRealizeException){<br />
System.err.println( &#8220;Could not realize media player&#8221; + cannotRealizeException);<br />
}<br />
catch (IOException iOException){<br />
System.err.println( &#8220;Error reading from the source&#8221; +iOException);<br />
}<br />
}<br />
}</p>
<p>Kemudian, kita edit JConference kita.</p>
<p>Masukkan method openPlayFile() pada action menu File&#8211;&gt;Open</p>
<p>Ganti</p>
<p>System.out.println(&#8220;Sementara&#8221;);</p>
<p>Dengan</p>
<p>openPlayFile();</p>
<p>Kemudian tambahkan method openPlayFile();</p>
<p>void openPlayFile() {<br />
URL theURL = null;<br />
JFileChooser fileChooser = new JFileChooser();<br />
int result = fileChooser.showOpenDialog(null);<br />
if (result == JFileChooser.APPROVE_OPTION) {<br />
try<br />
{<br />
theURL = fileChooser.getSelectedFile().toURL();<br />
}<br />
catch ( MalformedURLException malformedURLException )<br />
{<br />
System.err.println( &#8220;Could not create URL for the file&#8221; + malformedURLException);<br />
}<br />
}<br />
if (theURL != null)<br />
{<br />
MediaPlayer thePlayer = new MediaPlayer(theURL);<br />
this.add(thePlayer, BorderLayout.CENTER);<br />
this.setVisible(true);<br />
}<br />
}</p>
<p>Sekarang kita sudah membuat player untuk aplikasi kita. Post berikutnya akan menambahkan fasilitas capture untuk menampilkan dan menyimpan video dari web cam.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/tukangjava.wordpress.com/31/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/tukangjava.wordpress.com/31/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tukangjava.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tukangjava.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tukangjava.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tukangjava.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tukangjava.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tukangjava.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tukangjava.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tukangjava.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tukangjava.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tukangjava.wordpress.com/31/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tukangjava.wordpress.com&blog=2428649&post=31&subd=tukangjava&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tukangjava.wordpress.com/2008/03/30/membuat-aplikasi-video-conference-dengan-jmf-bagian-2-player/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/caf8c6538c3f700379a20ca80e776bbd?s=96&#38;d=identicon" medium="image">
			<media:title type="html">tukangjava</media:title>
		</media:content>
	</item>
		<item>
		<title>Membuat Aplikasi Video Conference dengan JMF bagian 1: Menu</title>
		<link>http://tukangjava.wordpress.com/2008/03/30/membuat-aplikasi-video-conference-dengan-jmf-bagian-1-menu/</link>
		<comments>http://tukangjava.wordpress.com/2008/03/30/membuat-aplikasi-video-conference-dengan-jmf-bagian-1-menu/#comments</comments>
		<pubDate>Sun, 30 Mar 2008 16:09:56 +0000</pubDate>
		<dc:creator>tukangjava</dc:creator>
				<category><![CDATA[JConference]]></category>

		<guid isPermaLink="false">http://tukangjava.wordpress.com/?p=30</guid>
		<description><![CDATA[Sekarang kita mencoba membuat aplikasi Video Conference menggunakan JMF.
Langkah awal, kita harus mengatur sistem kita agar dapat menjalankan JMF API.
Caranya install jdk kemudian JMF API dari Sun Microsystem. Lebih jelasnya lihat di post mengenai membuat pemutar mp3 dengan JMF di blog ini.
Langkah pertama, kita buat dulu GUI (Graphical User Interface) dari aplikasi tersebut.
Post ini akan [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tukangjava.wordpress.com&blog=2428649&post=30&subd=tukangjava&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Sekarang kita mencoba membuat aplikasi Video Conference menggunakan JMF.</p>
<p>Langkah awal, kita harus mengatur sistem kita agar dapat menjalankan JMF API.</p>
<p>Caranya install jdk kemudian JMF API dari Sun Microsystem. Lebih jelasnya lihat di post mengenai membuat pemutar mp3 dengan JMF di blog ini.</p>
<p>Langkah pertama, kita buat dulu GUI (Graphical User Interface) dari aplikasi tersebut.</p>
<p>Post ini akan mengulas pembuatan menu dulu. Selanjutnya akan dibuat secara bertahap.  Karena sambil dibuat sambil dipost, maka mungkin akan banyak perubahan dari awal. Jadi silahkan disimak bertahap.</p>
<p>Berikut adalah source code untuk menu nya:</p>
<p>import java.awt.*;<br />
import java.awt.event.ActionListener;<br />
import java.awt.event.ActionEvent;<br />
import javax.swing.*;<br />
import javax.swing.JMenu;<br />
import javax.swing.JMenuBar;<br />
import javax.swing.JFrame;</p>
<p>public class JConference extends JFrame {</p>
<p>public JConference() {<br />
super(&#8220;JConference v1.0&#8243;);<br />
//Beginning of File Menu<br />
JMenu fileMenu = new JMenu(&#8220;File&#8221;);<br />
fileMenu.setMnemonic(&#8216;F&#8217;);<br />
//File&#8211;&gt;Open<br />
JMenuItem openItem = new JMenuItem(&#8220;Open File&#8221;);<br />
openItem.setMnemonic(&#8216;O&#8217;);<br />
fileMenu.add(openItem);<br />
//Action for File&#8211;&gt;Open<br />
openItem.addActionListener(<br />
new ActionListener() {<br />
public void actionPerformed(ActionEvent event) {<br />
System.out.println(&#8220;Sementara&#8221;);<br />
}<br />
});<br />
//File&#8211;&gt;Capture<br />
JMenuItem captureItem = new JMenuItem(&#8220;Capture&#8221;);<br />
captureItem.setMnemonic(&#8216;P&#8217;);<br />
fileMenu.add(captureItem);<br />
//Action for File&#8211;&gt;Capture<br />
captureItem.addActionListener(<br />
new ActionListener() {<br />
public void actionPerformed(ActionEvent event) {<br />
System.out.println(&#8220;Sementara&#8221;);<br />
}<br />
});<br />
//File&#8211;&gt;Exit<br />
JMenuItem exitItem = new JMenuItem(&#8220;Exit&#8221;);<br />
exitItem.setMnemonic(&#8216;X&#8217;);<br />
fileMenu.add(exitItem);<br />
//Action for File&#8211;&gt;Exit<br />
exitItem.addActionListener(<br />
new ActionListener() {<br />
public void actionPerformed(ActionEvent event) {<br />
System.exit(0);<br />
}<br />
});<br />
//End of File Menu<br />
//Beginning of Player Menu<br />
JMenu playerMenu = new JMenu(&#8220;Player&#8221;);<br />
playerMenu.setMnemonic(&#8216;P&#8217;);<br />
//Player&#8211;&gt;SnapShot<br />
JMenuItem snapItem = new JMenuItem(&#8220;SnapShot&#8221;);<br />
snapItem.setMnemonic(&#8216;S&#8217;);<br />
playerMenu.add(snapItem);<br />
//Action for Player&#8211;&gt;SnapShot<br />
snapItem.addActionListener(<br />
new ActionListener() {<br />
public void actionPerformed(ActionEvent event) {<br />
System.out.println(&#8220;Sementara&#8221;);<br />
}<br />
});<br />
//End of Player Menu<br />
//Beginning of Conference Menu<br />
JMenu conferenceMenu = new JMenu(&#8220;Conference&#8221;);<br />
conferenceMenu.setMnemonic(&#8216;C&#8217;);<br />
//Conference&#8211;&gt;Join Session<br />
JMenuItem joinItem = new JMenuItem(&#8220;Join Session&#8221;);<br />
joinItem.setMnemonic(&#8216;J&#8217;);<br />
conferenceMenu.add(joinItem);<br />
//Action for Player&#8211;&gt;Join Session<br />
joinItem.addActionListener(<br />
new ActionListener() {<br />
public void actionPerformed(ActionEvent event) {<br />
System.out.println(&#8220;Sementara&#8221;);<br />
}<br />
});<br />
//Conference&#8211;&gt;Terminate Session<br />
JMenuItem terminateItem = new JMenuItem(&#8220;Terminate Session&#8221;);<br />
terminateItem.setMnemonic(&#8216;T&#8217;);<br />
conferenceMenu.add(terminateItem);<br />
//Action for Player&#8211;&gt;Terminate Session<br />
terminateItem.addActionListener(<br />
new ActionListener() {<br />
public void actionPerformed(ActionEvent event) {<br />
System.out.println(&#8220;Sementara&#8221;);<br />
}<br />
});<br />
//End of Conference Menu<br />
//Adding Menus to Menu Bar<br />
JMenuBar bar = new JMenuBar();<br />
setJMenuBar(bar);<br />
bar.add(fileMenu);<br />
bar.add(playerMenu);<br />
bar.add(conferenceMenu);<br />
//Display Properties of Menu<br />
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br />
setSize(500, 500);<br />
}<br />
public static void main(String[] args) {<br />
JConference JConf = new JConference();<br />
JConf.setVisible(true);<br />
}</p>
<p>}</p>
<p>Di post selanjutnya kita akan membuat method-method untuk memainkan file.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/tukangjava.wordpress.com/30/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/tukangjava.wordpress.com/30/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tukangjava.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tukangjava.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tukangjava.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tukangjava.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tukangjava.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tukangjava.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tukangjava.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tukangjava.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tukangjava.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tukangjava.wordpress.com/30/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tukangjava.wordpress.com&blog=2428649&post=30&subd=tukangjava&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tukangjava.wordpress.com/2008/03/30/membuat-aplikasi-video-conference-dengan-jmf-bagian-1-menu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/caf8c6538c3f700379a20ca80e776bbd?s=96&#38;d=identicon" medium="image">
			<media:title type="html">tukangjava</media:title>
		</media:content>
	</item>
	</channel>
</rss>