Exercise on Inner Class, Exception and Threading
Buatlah program java Aplikasi Music Player sebagai berikut
- Buatlah sebuah Java Project MusicPlayer
- Download library (jl 1.0.1.jar) dari link [JLayer] (http://www.javazoom.net/javalayer/javalayer.html)
- Add library jLayer pada project MusicPlayer
- Buatlah kelas Application sebagai berikut
![01] (/asset/01.JPG) - Import library berikut pada kelas Application
![02] (/asset/02.JPG) - class ThreadPlayer merupakan Inner Class
- extends Thread
- constructor
- menginisialisasi String filepath
- method run()
- lakukan proses berikut dalam blok try-catch
- Baca file yang diambil dari String filepath menggunakan FileInputStream
- Instansiasi objek Player untuk memainkan file musik yang dibaca
- Putar musik menggunakan method play() dari objek Player
![03] (/asset/03.JPG)
- tambahkan catch FileNotFoundException jika file pada filepath tidak ditemukan
- tambahkan catch JavaLayerException jika terjadi error saat memainkan musik
- isi catch melempar new IllegalStateException
![04] (/asset/04.JPG)
- Menginstansiasi Arraylist musicList baru
- Menambahkan String path ke dalam ArrayList musicList
- mengembalikan ArrayList musicList dalam bentuk array String
![05] (/asset/05.JPG)
- mengembalikan String path music yang sedang diputar
![06] (/asset/06.JPG)
- menghapus String path ke-i dari musicList
- method akan memutar lagu ke-i dari dalam musicList
- set nowplaying = i
- ambil String path music ke-i dari musicList
- instansiasi objek ThreadPlayer baru menggunakan String path yang diambil
- jalankan objek ThreadPlayer dengan memanggil method start()
![07] (/asset/07.JPG)
- method menghentikan music yang sedang diputar dengan menghentikan thread yang sedang berjalan
![08] (/asset/08.JPG)
- method menghentikan music yang sedang diputar
- memainkan music yang berada di setelah music yang sedang diputar di dalam listMusic
- method dipanggil jika nowPlaying bukanlah music terakhir di dalam listMusic
![09] (/asset/09.JPG)
- method menghentikan music yang sedang diputar
- memainkan music yang berada di sebelum music yang sedang diputar di dalam listMusic
- method dipanggil jika nowPlaying bukanlah music pertama di dalam listMusic
![10] (/asset/10.JPG)
- Buatlah class JFrame PlayerGui.java dengan tampilan sebagai berikut
![11] (/asset/11.JPG) - Komponen yang ada :
- listMusic : JList
- txFieldPlaying : JTextField, set Editable = false
- btnAdd, btnDelete, btnPrev, btnPlay, btnStop, btnNext
- hapus main method (psvm) di dalam GUI
- tambahkan method getter objek untuk mengembalikan setiap objek button
![12] (/asset/12.JPG) - method void setListMusic( String[] musicList )
- method mengeset JList listMusic dengan data musicList dengan memanggil method setListData
![13] (/asset/13.JPG) - method void setTxFieldPlaying( String filename )
- method mengeset text field txFieldPlaying dengan string filename dengan memanggil method setText
- method int getSelectedMusic()
- method mengembalikan integer index list yang dipilih dari JList listMusic
- method melemparkan new IllegalStateException jika tidak ada music yang dipilih dari listMusic
![14] (/asset/14.JPG)
- import java.awt.event.ActionListener
- method void addListener(ActionListener e)
- tambahkan add listener pada setiap tombol dengan memanggil method addActionListener
![15] (/asset/15.JPG)
- Buatlah class Controller.java sesuai class diagram berikut
![17] (/asset/17.JPG) - import library berikut
![16] (/asset/16.JPG) - kelas Controller implements ActionListener
- implementasikan method actionPerformed(ActionEvent ae)
- Constructor menginstansiasi Application app
- Constructor menginstansiasi GUI view
- set visible view = true
- set lisener view dengan controller this
- set view listMusic dengan musicList dari objek app
![18] (/asset/18.JPG)
- get Object source action event
![19] (/asset/19.JPG) - lakukan proses berikut dalam blok try-catch
- cek source action event
- jika event berasal dari tombol add :
![21] (/asset/21.JPG)
- Instansiasi objek JFileChooser() untuk membuka window file chooser
- set filter file *.mp3
- tampilkan JFileChooser dari view GUI
![20] (/asset/20.JPG) - jika file mp3 telah dipilih, ambil absolute path dari file
- tambahkan file path music ke dalam musicList objek app
- update tampilan listMusic
![22] (/asset/22.JPG)
- jika event berasal dari tombol delete :
- ambil index music yang dipilih dari listMusic menggunakan method getSelectedMusic
- hapus path music yang dipilih pada objek app
- update tampulan listMusic
![23] (/asset/23.JPG)
- jika event berasal dari tombol play :
- ambil index music yang dipilih dari listMusic menggunakan method getSelectedMusic
- stop music yang sedang berjalan
- play music dengan index music yang dipilih
- update text field playing dengan mengambil string getNowPlayed()
![24] (/asset/24.JPG)
- jika event berasal dari tombol stop :
- stop music yang sedang berjalan
- hapus text di dalam text field playing
![25] (/asset/25.JPG)
- jika event berasal dari tombol next :
- panggil method next() dari objek app
- update text field playing
![26] (/asset/26.JPG)
- jika event berasal dari tombol prev :
- panggil method prev() dari objek app
- update text field playing
![27] (/asset/27.JPG)
- pada blok catch tampilkan window JOptionPane dan tampilkan pesan error yang didapat
![28] (/asset/28.JPG)
- Buatlah class Driver.java yang memiliki main method (psvm)
- instansiasi objek Controller()
- cobalah aplikasi music player yang telah dibuat