Selasa, 16 Agustus 2016

Contoh pembuatan aplikasi sederhana menggunakan IntelliJ IDEA IDE

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.

4 komentar: