Pertama yang
harus disiapkan adalah mendownload beberapa tools
yang digunakan, diantaranya yaitu IntelliJ IDEA IDE, JDK versi 1.8.0, Apache Maven
versi 3.3.9, dan Apache Karaf.
(Untuk proses installasi bisa dilihat di https://www.jetbrains.com/help/idea/2016.2/installing-and-launching.html, karenapenulis hanya akan
menjelaskan tentang bagaimana membuat OSGi bundle).
Untuk membuat
sebuah project baru atau lembar
pekerjaan baru, kita buka saja IntelliJ IDEA IDE dan pilihlah Create New Project.
Kemudian akan
muncul jendela baru seperti pada gambar di bawah ini. Pilih Gradle dan centang pada kolom bagian Java lalu klik Next.
Setelah itu
akan muncul jendela baru (seperti gambar di bawah). Kemudian ketikkan convert pada kolom ArtifactId lalu klik Next.
Selanjutnya
akan ada jendela baru. Centang pada semua bagian kolom yang belum dicentang.
Lalu klik Next.
Setelah itu
akan muncul tampilan seperti pada gambar di bawah. Disini kita bisa melihat
sturktur dari project yang kita buat.
Kemudian klik
pada struktur project yang berada disamping kiri, tampilkan menu dropdown dimulai dari src à main à java à klik kanan lalu
pilih New à pilih java class. Ketik convert sebagai nama kelasnya lalu klik OK. Setelah itu akan muncul
papan editor untuk menuliskan code
program converter.
Atau dengan
meng-copy-kan kode program di bawah
ini:
import java.awt.*; import javax.swing.*; import javax.swing.border.*; import java.awt.event.*; public class Convert extends JFrame implements ActionListener{ // private static final Logger logger = LogManager.getRootLogger(convert.class); JButton btnHitung = new JButton("Hitung"); JButton btnClear = new JButton("Clear"); float pilihan1,pilihan2,besaran_input,besaran_keluaran,nilai_input,hasil; String arrBesaran[] = {"Meter", "Centimeter", "Milimeter", "Inchi", "Kilometer"}; JTextField jtfi_input = new JTextField(""); JLabel jlblHasil = new JLabel("Hasil : "); JComboBox cmbBesaran1 = new JComboBox (arrBesaran); JComboBox cmbBesaran2 = new JComboBox (arrBesaran); float konv_inchi; //konstruktor public Convert() { //konfigurasi komponen jlblHasil.setForeground(Color.BLACK); jtfi_input.setEditable(true); jtfi_input.setColumns(6); btnHitung.setToolTipText("Hitung Nilai"); btnClear.setToolTipText("Hapus Field"); cmbBesaran1.setMaximumRowCount(5); cmbBesaran2.setMaximumRowCount(5); //event item listener untuk combobox cmbBesaran1.addItemListener( new ItemListener() { public void itemStateChanged (ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED){ pilihan1 = cmbBesaran1.getSelectedIndex(); } } } //akhir inner class ); //event item listener untuk combobox cmbBesaran2.addItemListener( new ItemListener() { public void itemStateChanged (ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED){ pilihan2 = cmbBesaran2.getSelectedIndex(); } } } //akhir inner class ); // Panel 1 JPanel p1 = new JPanel(new GridLayout(1, 2, 10, 10)); Font largeFont = new Font("TimesRoman", Font.BOLD, 20); Border lineBorder = new LineBorder(Color.BLACK, 2); p1.add(jtfi_input); p1.add(cmbBesaran1); p1.add(jlblHasil); p1.add(cmbBesaran2); p1.setBorder(new TitledBorder("Input dan Hasil")); // Panel 2 JPanel p2 = new JPanel(new FlowLayout(FlowLayout.LEFT, 2, 2)); p2.add(btnHitung); p2.add(btnClear); // tambahkan kedua panel kedalam frame setLayout(new GridLayout(2, 1, 5, 5)); add(p1); add(p2); //Injeksi Event di Komponen btnHitung.addActionListener(this);//tambahkan event disini btnClear.addActionListener(this);//tambahkan event disini } //pengaturan aksi setiap event public void actionPerformed( ActionEvent event){ if ( event.getSource() == btnHitung ){ //ambil info nilai yg diinput besaran_input = pilihan1; besaran_keluaran = pilihan2; nilai_input = Float.parseFloat(jtfi_input.getText()); konv_inchi = 24 / 10; //2.4 //logika rumus meter to all if ((besaran_input == 0)&&(besaran_keluaran == 1)){ //untuk meter ke centimeter hasil = nilai_input * 100; } else if ((besaran_input == 0)&&(besaran_keluaran == 2)){ //untuk meter ke milimeter hasil = nilai_input * 1000; } else if ((besaran_input == 0)&&(besaran_keluaran == 3)){ //untuk meter ke inchi, 1 inchi = 2,45 cm hasil = (nilai_input * 100); hasil = hasil / konv_inchi; } else if ((besaran_input == 0)&&(besaran_keluaran == 4)){ //untuk meter ke kilometer hasil = nilai_input / 1000; } //logika rumus centimeter to all else if ((besaran_input == 1)&&(besaran_keluaran == 0)){ //untuk centimeter ke meter hasil = nilai_input / 100; } else if ((besaran_input == 1)&&(besaran_keluaran == 2)){ //untuk centimeter ke milimeter hasil = nilai_input * 10; } else if ((besaran_input == 1)&&(besaran_keluaran == 3)){ //untuk centimeter ke inchi hasil = nilai_input / konv_inchi; } else if ((besaran_input == 1)&&(besaran_keluaran == 4)){ //untuk centimeter ke kilometer hasil = nilai_input / 100000; } //logika rumus milimeter to all else if ((besaran_input == 2)&&(besaran_keluaran == 0)){ //untuk milimeter ke meter hasil = nilai_input / 1000; } else if ((besaran_input == 2)&&(besaran_keluaran == 1)){ //untuk milimeter ke centimeter hasil = nilai_input / 10; } else if ((besaran_input == 2)&&(besaran_keluaran == 3)){ //untuk milimeter ke inchi hasil = (nilai_input / 10); hasil = hasil / konv_inchi; } else if ((besaran_input == 2)&&(besaran_keluaran == 4)){ //untuk milimeter ke kilometer hasil = nilai_input / 1000000; } //logika rumus inchi to all else if ((besaran_input == 3)&&(besaran_keluaran == 0)){ //untuk inchi ke meter hasil = (nilai_input * konv_inchi); hasil = hasil / 100 ; } else if ((besaran_input == 3)&&(besaran_keluaran == 1)){ //untuk inchi ke centimeter hasil = (nilai_input * konv_inchi); } else if ((besaran_input == 3)&&(besaran_keluaran == 2)){ //untuk inchi ke milimeter hasil = (nilai_input * konv_inchi); hasil = hasil * 10; } else if ((besaran_input == 3)&&(besaran_keluaran == 4)){ //untuk inchi ke kilometer hasil = (nilai_input * konv_inchi); hasil = hasil / 100000; } //logika rumus kilometer to all else if ((besaran_input == 4)&&(besaran_keluaran == 0)){ //untuk kilometer ke meter hasil = nilai_input * 1000; } else if ((besaran_input == 4)&&(besaran_keluaran == 1)){ //untuk kilometer ke centimeter hasil = nilai_input * 100000; } else if ((besaran_input == 4)&&(besaran_keluaran == 2)){ //untuk kilometer ke milimeter hasil = nilai_input * 1000000; } else if ((besaran_input == 4)&&(besaran_keluaran == 3)){ //untuk kilometer ke inchi hasil = (nilai_input * 100000); hasil = hasil / konv_inchi; } //tampilkan hasil perhitungan jlblHasil.setText(Float.toString(hasil)); //bersihkan semua hasil = 0; besaran_input = 0; besaran_keluaran = 0; } else if ( event.getSource() == btnClear ){ jtfi_input.setText(""); jlblHasil.setText("Hasil : "); } } }
Kemudian create kelas baru (seperti langkah di
atas) dan beri nama kelas tersebut ConvertPanel,
dan ketikkan kode program seperti pada gambar di bawah ini :
Selanjutnya klik panah hijau di sudut
kanan atas, atau dengan mengklik Run à
Run ‘convert’ untuk menjalankan program yang telah dibuat
tadi, tunggu hingga muncul pop up
program converter seperti pada gambar
di bawah. Dan cobalah program converter
tersebut dengan memasukkan angka sesuai keinginan.
Program converter telah berhasil di buat, akan tetapi masih belum
menggunakan system OSGi bundle. Untuk
menerapkan sistem OSGi kita bisa lakukan secara manual, caranya klik menu Run à
Edit Configurations
Setelah itu akan muncul
menu seperti pada gambar di bawah. Klik tombol plus di pojok kiri atas, kemudian pilih OSGi bundle. Kemudian klik OK.
Sebenarnya
dengan membuat kelas ConvertPanel, sudah
menggunakan sistem OSGi, namun tahap di atas dilakukan untuk menambahkan secara
otomatis beberapa plugin yang mungkin dibutuhkan. Tahap selanjutnya adalah
pengaturan dependensinya. Pada menu dropdown
di samping kiri, pilih buil.gradle
untuk mengatur gradle pada program yang
telah kita buat sebelumnya, dan tambahkan beberapa baris kode program sehingga
seperti gambar di bawah ini.
Setelah
semuanya selesai, kita tinggal mem-build
program di atas menjadi bundle
(.jar). Caranya adalah klik menu File à Project Structure,
kemudian akan muncul jendela Project
Structure. Pilih Artifacts
kemudian klik tombol plus berwarna
hijau, pilih JAR dan pada menu doropdown nya pilih ”From modules dependencies”. Lalu klik OK.
Setelah
itu akan muncul jendela Create JAR From
Modules, klik tanda titik- titik pada kolom Main Class dan akan muncul jendela Select Main Class. Karena pada program yang kita buat sebelumnya main class terdapat di kelas ConvertPanel.java maka kita pilih kelas
tersebut dan tekan OK seperti pada gambar di bawah ini.
Setelah
itu akan muncul tampilan baru seperti pada gambar di bawah. Ketikkan nama file
.jar sesuai dengan yang diinginkan, kemudian lihat path keluaran dari bundel jar
tersebut.
Setelah
itu pada menu Build klik dan pilih Build Artifacts. Setelah proses pembangunan bundel selesai,
silahkan cek path tempat keluaran jar
tersebut. Pada kasus ini keluaran biasanya terdapat di folder out.
Kita
bisa mencoba menjalankan aplikasi tersebut dengan cara men- doubleclick. Dan pop up program converter
akan tampil. Terakhir, untuk mengecek sistem OSGi nya, kita bisa membuka file MANIFEST nya. Biasanya terdapat di
folder lib à META-INF, disana terdapat file txt bernama MANIFEST.
Tampilannya seperti pada gambar di bawah ini :
Dari file MANIFEST di atas kita bisa mengetahui OSGi bundle seperti apa yang digunakan,
dengan melihat versinya.
pusingnya
BalasHapusKode program controlpanelnya gak kebaca. jelek banget ss nya
BalasHapusConvertPanel mksudnya
Hapusga keliatan
BalasHapus