SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
Tri Sapto Adji                                                                         BCC Manokwari


                                                          Membuat Aplikasi Konverter Suhu
Pada   pembahasan   sebelumnya   kita   telah   belajar   bagaimana   membuat   dan   menjalankan 
aplikasi   sederhana,   baik   itu   berbasis   konsol   maupun   GUI   (Graphical   User   Interface) 
menggunakan   bahasa   pemrograman   Java.   Pada   workshop   yang   kedua   ini,   kita   akan 
meningkat ke jenjang yang sedikit lebih rumit untuk membuat sebuah aplikasi Konverter 
Suhu. Aplikasi ini dibuat untuk mampu melakukan konversi dari dan menjadi empat jenis 
satuan suhu yang umum digunakan yakni : Celcius, Fahrenheit, Kelvin dan Reamur.
Rumus atau formula yang digunakan adalah sebagai berikut :

           Dari Satuan                          Ke Satuan                        Rumus
Celcius (C)                         Fahrenheit (F)                         9
                                                                    F =      C + 32
                                                                           5
                                    Kelvin (K)                      K = C + 273
                                    Reamur (R)                             4
                                                                    R =      C
                                                                           5
Fahrenheit (F)                      Celcius (C)                            5
                                                                    C =      (F­32)
                                                                           9
                                    Kelvin (K)                             5
                                                                    K =      (F­32)+273
                                                                           9
                                    Reamur (R)                             4
                                                                    R =      (F­32)
                                                                           9
Kelvin (K)                          Celcius (C)                     C = K­273
                                    Fahrenheit (F)                         9
                                                                    F =      (K­273)+32
                                                                           5
                                    Reamur (R)                             4
                                                                    R =      (K­273)
                                                                           5
Reamur (R)                          Celcius (C)                            5
                                                                    C =      R
                                                                           4
                                    Fahrenheit (F)                         9
                                                                    F =      R + 32
                                                                           4
                                    Kelvin (K)                             5
                                                                    K =      R + 273
                                                                           4


Dengan adanya 12 formula diatas, berarti kita harus membuat sebanyak 12 fungsi (metode 
yang memiliki nilai balik) yang masing­masing berisi satu perhitungan dari rumus­rumus 
tersebut   di   atas.   Fungsi­fungsi   atau   metode­metode   tersebut   nantinya   dirancang   untuk 

Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu                                 halaman 1/18
Tri Sapto Adji                                                                           BCC Manokwari


mampu menghitung bilangan pecahan, oleh karena itu kita menggunakan tipe data yang 
dapat menampung nilai bilangan pecahan, yakni float.
Sebelum   sampai   ke   pembuatan   fungsi­fungsi   tersebut,   yang   wajib   kita   lakukan   adalah 
membuat desain antar muka yang mampu melakukan hal­hal sebagai berikut :
    1. Menampilkan keterangan tentang program.
    2. Menerima input bilangan dari user.
    3. Menampilkan daftar pilihan satuan suhu yang dapat dipilih oleh user.
    4. Menampilkan nama satuan  sesuai  dengan  pilihan  dari  daftar  pilihan  satuan suhu 
        yang dipilih oleh user.
    5. Memerintahkan program melakukan perhitungan sesuai dengan input bilangan dan 
        satuan suhu yang dipilih oleh user.
    6. Menampilkan hasil perhitungan.
Komponen­komponen yang dapat digunakan untuk itu adalah :
    1. Sebuah   obyek   berkelas   JMenuItem   yang   apabila   diklik   akan   menampilkan 
        keterangan tentang program.
    2. Dua buah obyek berkelas JFormattedTextField berupa kotak isian untuk menerima 
        input dan  menampilkan output hasil perhitungan.
    3. Dua buah obyek berkelas JComboBox berupa daftar pilihan besaran suhu yang akan 
        dikonversi dan daftar pilihan besaran suhu hasil konversi.
    4. Dua   buah   obyek   berkelas   JLabel   untuk   menampilkan   nama   satuan   suhu   sesuai 
        dengan   nama   besaran   suhu   yang   dipilih   pada   daftar   pilihan,   dan   sebuah   obyek 
        JLabel   lagi   untuk   menampilkan   judul   di   bagian   atas   program   (seperti   sebuah 
        heading).
    5. Sebuah obyek tombol berkelas JButton untuk memerintahkan program melakukan 
        perhitungan berdasarkan besaran suhu yang dipilih dan angka yang di­input oleh 
        user.
Berikut adalah source code dari program tersebut :

//Berkas KonverterSuhu.java
//Author : Tri Sapto Adji, S.Pd.
//         @Manokwari, Papua Barat, Indonesia

import javax.swing.*;


Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu                                    halaman 2/18
Tri Sapto Adji                                                                          BCC Manokwari


import   java.awt.*;
import   java.awt.event.*;
import   java.text.*;
import   javax.swing.text.*;
import   java.net.URL;

public class KonverterSuhu extends JFrame {
      JMenuItem item;
      JComboBox daftar1;
      JComboBox daftar2;
      JFormattedTextField teks1;
      JFormattedTextField teks2;
      JLabel satuan1;
      JLabel satuan2;
      JButton hitung;
      int[] hasil;

       public static void main(String[] args) {
             KonverterSuhu ks = new KonverterSuhu();
             ks.pack();
             PosisiFrame.center(ks);//Membutuhkan file PosisiFrame.class        pada direktori kerja
             ks.setVisible(true);
       }

       public KonverterSuhu() {
             super("JKonverter");
             setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
             JMenuBar batangMenu = new JMenuBar();
             setJMenuBar(batangMenu);
             JMenu menu = new JMenu("Menu");
             batangMenu.add(menu);
                 item = new JMenuItem("Tentang JKonverter", cekIcon("JKonverter.png"));
                 menu.add(item);
                 item.addActionListener(new ActionListener() {
                       public void actionPerformed(ActionEvent ae){
                             if(ae.getSource() == item) keterangan();
                       }
                 });

                 JLabel judul = new JLabel("<html><h1><center>KONVERTER SUHU</center></h1></html>");
                 JPanel panel0 = new JPanel();
                 panel0.add(judul);
                 JPanel panel1 = new JPanel();
                 panel1.setLayout(new GridLayout(4,3,10,5));
                 panel1.add(new JLabel("Dari :"));
                 panel1.add(new JLabel("Nilai :"));
                 panel1.add(new JLabel(""));
                 String[] suhu = {"Celcius", "Fahrenheit", "Kelvin", "Reamur"};
                 daftar1 = new JComboBox (suhu);
                 daftar1.addActionListener(new ActionListener() {
                       public void actionPerformed(ActionEvent ae){
                             JComboBox combo = (JComboBox)ae.getSource();
                             String s = (String)combo.getSelectedItem();
                               String t = (s.equals("Kelvin"))?s:"<html><sup>o</sup>"+s+"</html>";
                               satuan1.setText(t);
                               teks2.setValue(null);
                       }
                 });
                 panel1.add(daftar1);
                 teks1 = new JFormattedTextField(NumberFormat.getNumberInstance());

Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu                                   halaman 3/18
Tri Sapto Adji                                                                               BCC Manokwari


                 teks1.setColumns(16);
                 panel1.add(teks1);
                 satuan1 = new JLabel("<html><sup>o</sup>"+(String)daftar1.getSelectedItem()+"</html>");
                 panel1.add(satuan1);

                 panel1.add(new JLabel("Menjadi :"));
                 panel1.add(new JLabel("Nilai :"));
                 panel1.add(new JLabel(""));
                 daftar2 = new JComboBox (suhu);
                 panel1.add(daftar2);
                 teks2 = new JFormattedTextField(NumberFormat.getNumberInstance());
                 teks2.setColumns(16);
                 teks2.setEditable(false);
                 panel1.add(teks2);
                 daftar2.addActionListener(new ActionListener() {
                       public void actionPerformed(ActionEvent ae){
                             JComboBox combo = (JComboBox)ae.getSource();
                             String s = (String)combo.getSelectedItem();
                                String t = (s.equals("Kelvin"))?s:"<html><sup>o</sup>"+s+"</html>";
                                satuan2.setText(t);
                                teks2.setValue(null);
                        }
                 });
                 satuan2 = new JLabel("<html><sup>o</sup>"+(String)daftar1.getSelectedItem()+"</html>");
                 panel1.add(satuan2);

                 getContentPane().add(panel0,BorderLayout.NORTH);
                 getContentPane().add(panel1, BorderLayout.CENTER);

                 hitung = new JButton("Konversi");
                 hitung.addActionListener(new ActionListener() {
                       public void actionPerformed (ActionEvent ae) {
                             hasil = new int[2];
                             hasil[0] = daftar1.getSelectedIndex();
                             hasil[1] = daftar2.getSelectedIndex();
                             if(teks1.getValue()==null) return;
                             if(hasil[0]==hasil[1]) teks2.setValue(teks1.getValue());
                             if(hasil[0]!=hasil[1]) {
                                   if(hasil[0]==0 && hasil[1]==1)
                                         teks2.setValue(celciusToFahrenheit());
                                   if(hasil[0]==0 && hasil[1]==2)
                                         teks2.setValue(celciusToKelvin());
                                   if(hasil[0]==0 && hasil[1]==3)
                                         teks2.setValue(celciusToReamur());
                                   if(hasil[0]==1 && hasil[1]==0)
                                         teks2.setValue(fahrenheitToCelcius());
                                   if(hasil[0]==1 && hasil[1]==2)
                                         teks2.setValue(fahrenheitToKelvin());
                                   if(hasil[0]==1 && hasil[1]==3)
                                         teks2.setValue(fahrenheitToReamur());
                                   if(hasil[0]==2 && hasil[1]==0)
                                         teks2.setValue(kelvinToCelcius());
                                   if(hasil[0]==2 && hasil[1]==1)
                                         teks2.setValue(kelvinToFahrenheit());
                                   if(hasil[0]==2 && hasil[1]==3)
                                         teks2.setValue(kelvinToReamur());
                                   if(hasil[0]==3 && hasil[1]==0)
                                         teks2.setValue(reamurToCelcius());
                                   if(hasil[0]==3 && hasil[1]==1)
                                         teks2.setValue(reamurToFahrenheit());

Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu                                       halaman 4/18
Tri Sapto Adji                                                                   BCC Manokwari


                                       if(hasil[0]==3 && hasil[1]==2)
                                             teks2.setValue(reamurToKelvin());
                               }
                       }
                 });

                 JPanel panel2 = new JPanel();
                 panel2.setLayout(new FlowLayout(FlowLayout.CENTER));
                 panel2.add(hitung);
                 getContentPane().add(panel2, BorderLayout.SOUTH);
       }

       private float celciusToFahrenheit() {
                 float celcius = Float.valueOf(teks1.getValue().toString()).floatValue();
                 float Fahrenheit = 9f/5 * celcius + 32;
                 return Fahrenheit;
       }

       private float celciusToKelvin() {
                 float celcius = Float.valueOf(teks1.getValue().toString()).floatValue();
                 float Kelvin = celcius + 273;
                 return Kelvin;
       }

       private float celciusToReamur() {
                 float celcius = Float.valueOf(teks1.getValue().toString()).floatValue();
                 float Reamur = 4f/5 * celcius;
                 return Reamur;
       }

       private float fahrenheitToCelcius() {
                 float fahrenheit = Float.valueOf(teks1.getValue().toString()).floatValue();
                 float Celcius = 5f/9 * (fahrenheit - 32);
                 return Celcius;
       }

                 private float fahrenheitToKelvin() {
                 float fahrenheit = Float.valueOf(teks1.getValue().toString()).floatValue();
                 float Kelvin = 5f/9*(fahrenheit-32)+273;
                 return Kelvin;
       }

       private float fahrenheitToReamur() {
                 float fahrenheit = Float.valueOf(teks1.getValue().toString()).floatValue();
                 float Reamur = 4f/9*(fahrenheit-32);
                 return Reamur;
       }

       private float kelvinToCelcius() {
                 float kelvin = Float.valueOf(teks1.getValue().toString()).floatValue();
                 float Celcius = kelvin-273;
                 return Celcius;
       }

                 private float kelvinToFahrenheit() {
                 float kelvin = Float.valueOf(teks1.getValue().toString()).floatValue();
                 float Fahrenheit = 9f/5 * (kelvin-273)+32;
                 return Fahrenheit;

Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu                           halaman 5/18
Tri Sapto Adji                                                                          BCC Manokwari


       }

                 private float kelvinToReamur() {
                 float kelvin = Float.valueOf(teks1.getValue().toString()).floatValue();
                 float Reamur = 4f/5 * (kelvin-273);
                 return Reamur;
       }

       private float reamurToCelcius() {
                 float reamur = Float.valueOf(teks1.getValue().toString()).floatValue();
                 float Celcius = 5f/4 * reamur;
                 return Celcius;
       }

       private float reamurToFahrenheit() {
                 float reamur = Float.valueOf(teks1.getValue().toString()).floatValue();
                 float Fahrenheit = 9f/4 * reamur + 32;
                 return Fahrenheit;
       }

       private float reamurToKelvin() {
                 float reamur = Float.valueOf(teks1.getValue().toString()).floatValue();
                 float Kelvin = 5f/4 * reamur + 273;
                 return Kelvin;
       }

       private ImageIcon cekIcon(String path) {
             URL imgURL = KonverterSuhu.class.getResource(path);
             if(imgURL != null) {
                   return new ImageIcon(imgURL);
             }else {
                   System.err.println("Maaf, icon pada " + path + " tidak ada");
                   return null;
             }
       }

       private void keterangan() {
             JOptionPane.showMessageDialog(
                   null,
                       "<html><h1>JKonverter</h1><hr> <h2>Program untuk mengkonversi Suhu</h2>" +
                       "<br>Dibuat oleh Tri Sapto Adji, S.Pd."+
                       "<br>@Manokwari, Papua Barat Indonesia<br>Oktober 2011"+
                       "<br><br>JKonverter by Tri Sapto Adji, S.Pd. is a Freeware."+
                       "<br>It was created in order to be usefull"+
                       "<br>but "Without Any Guarantee" for the mistake"+
                       "<br>or error that'll happen by using this program." +
                       "<br>Use it at your own risk!",
                       "Tentang JKonverter",
                       1, cekIcon("JKonverter1.png")
                 );
       }

}


Mari   kita   bahas  source   code  program   tersebut.   Baris­baris   pertama   merupakan   deklarasi 
import  yang   harus  disertakan  berkaitan  dengan  berbagai   komponen  yang   kita  gunakan. 

Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu                                  halaman 6/18
Tri Sapto Adji                                                                           BCC Manokwari


Deklarasi ini harus ada karena memuat berbagai konstruktor dan method dari kelas­kelas 
komponen   dalam   program   kita.   Setelah   itu   pendeklarasian   kelas,   yakni   kelas   bernama 
KonverterSuhu yang merupakan kelas turunan dari JFrame.  Kodenya adalah :

public class KonverterSuhu extends JFrame {
      ...........
      ...........
}


Kemudian kita perlu mendeklarasikan komponen­komponen yang akan digunakan untuk 
menampung   nilai   input,   menampilkan   satuan   suhu   dan   output   hasil   perhitungan,   serta 
tombol perintah untuk melakukan perhitungan. Hal itu terdapat pada deklarasi :
       JMenuItem item;
       JComboBox daftar1;
       JComboBox daftar2;
       JFormattedTextField teks1;
       JFormattedTextField teks2;
       JLabel satuan1;
       JLabel satuan2;
       int[] hasil;
       JButton hitung;


Perhatikan baris terakhir pada deklarasi tersebut, terdapat variabel array atau larik yakni 
int[] hasil. Variabel tersebut bukanlah merupakan komponen dari kontainer JFrame yang 
akan kita gunakan untuk mendesain antar muka program, tetapi merupakan variabel yang 
nantinya akan kita gunakan untuk menampung nilai index dari item pada daftar pilihan 
satuan suhu yang  dipilih oleh  pengguna. Berdasarkan nilai  index dari item yang  dipilih 
tersebut kita akan mengatur fungsi mana yang nantinya akan dikerjakan oleh program dari 
12 perhitungan yang telah dituliskan rumusnya pada pembahasan di awal.
Selanjutnya adalah deklarasi dari method main. Sebagaimana kita ketahui, bahwa method 
main   harus   ada   pada   sebuah   kelas   program   java   yang   akan   dieksekusi   sebagai   sebuah 
program. Di dalamnya terdapat pembentukan obyek berkelas KonverterSuhu (kelas yang 
sedang   kita   bahas   pembuatannya   sekarang)   yang   kita   beri   nama   ks.   Terdapat   juga 
pengaturan property­nya berupa ukuran frame­nya (ks.pack()), pengaturan posisinya di 
tengah   layar   (PosisiFrame.center(ks)),   dan   menampilkan   frame   tersebut   di   layar 
(ks.setVisible(true)).   Perhatikan   pernyataan   (PosisiFrame.center(ks)),   pernyataan 
tersebut   membutuhkan   adanya   file   PosisiFrame.class   pada   direktori   yang   sama.   Kelas 


Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu                                    halaman 7/18
Tri Sapto Adji                                                                              BCC Manokwari


tersebut   telah   dibuat   sendiri   sebelumnya.   Di   dalamnya   terdapat   metode   center   untuk 
memposisikan   suatu   frame   atau   jendela   di   tengah­tengah   layar.   Jika   Anda   menghapus 
pernyataan tersebut, program KonverterSuhu kita masih dapat dijalankan, tetapi posisinya 
tidak berada di tengah­tengah layar monitor, melainkan pada sudut kiri atas layar monitor 
Anda. Berikut adalah source code dari file PosisiFrame.class tersebut :


import javax.swing.JFrame;
import java.awt.Dimension;
import java.awt.Toolkit;


public class PosisiFrame {
       public static void center(JFrame jf) {
                 Dimension ukuranLayar = Toolkit.getDefaultToolkit().getScreenSize();
                 Dimension ukuranFrame = jf.getSize();
                 int x = (ukuranLayar.width - ukuranFrame.width)/2;
                 int y = (ukuranLayar.height - ukuranFrame.height)/2;
                 jf.setLocation(x,y);
       }
}



Selanjutnya   adalah   menciptakan   konstruktor   dari   kelas   KonverterSuhu   yang   kita   buat. 
Konstruktor adalah method yang harus dituliskan untuk meng­inisialisasi instans dari suatu 
kelas. Artinya apabila kelas tersebut dipanggil melalui pembentukan obyek­nya, maka baris­
baris   kode   pada   konstruktor   inilah   yang   akan   dijalankan.   Syarat   utama   dari   suatu 
konstruktor adalah bahwa namanya harus sama dengan nama kelas, tetapi tanpa kata kunci 
class. Suatu konstruktor boleh memiliki suatu parameter atau argumen sebagaimana halnya 
suatu   method   (tetapi   pada   program   kita   kali   ini,   kita   tidak   menyertakan   adanya   suatu 
parameter). 
Hal pertama yang kita lakukan adalah memberikan judul yang akan ditampilkan pada title  
bar dari Frame yang akan ditampilkan, serta mengatur agar frame tersebut dapat ditutup 
bila user mengklik tombol exit pada frame tersebut melalui baris kode :

       //Memberikan judul pada title bar
       super("JKonverter");
       //Mengatur agar jendela/frame dapat ditutup bila tombol exit diklik
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu                                       halaman 8/18
Tri Sapto Adji                                                                         BCC Manokwari




Yang harus menjadi perhatian Anda adalah baris kode yang menggunakan kata kunci super 
tersebut harus ditulis pada baris pertama dalam method konstruktor, jika ditulis bukan pada 
baris pertama akan muncul pesan kesalahan. Sedangkan pernyataan pada baris berikutnya 
dapat Anda tulis pada baris mana saja, yang penting masih dalam blok konstruktor tersebut.
Selanjutnya   kita   akan   merancang   susunan   antar   muka   program   kita.   Pertama­tama   kita 
akan   mengatur   bagaimana   menempatkan   komponen   JMenuItem   item   yang   telah 
dideklarasikan   sebelumnya.   JMenuItem   ini   harus   ditempatkan   pada   komponen   JMenu. 
Sedangkan JMenu sendiri harus dipasang pada suatu bar yang disebut JMenuBar. Kemudian 
obyek JMenuBar ini ditempatkan pada Frame (jendela) program kita. Dengan kata lain, kita 
mendeklarasikan   terlebih   dahulu   obyek   berkelas   JMenuBar,   kemudian   mendeklarasikan 
obyek   berkelas   JMenu.   Selanjutnya   menempatkan   obyek   JMenu   tersebut   ke   obyek 
JMenuBar,   dan   menempatkan   obyek   JMenuBar   tersebut   ke   frame.   Adapun   obyek 
JMenuItem   yang   telah   dideklarasikan   sebelumnya   perlu   didefinisikan   terlebih   dahulu 
sebelum   ditempatkan   pada   obyek   JMenu   tersebut.   Berikut   adalah  source   code­nya   yang 
sudah ditambahkan dengan penjelasan :

//deklarasi & definisi obyek JMenuBar bernama batangMenu
JMenuBar batangMenu = new JMenuBar();
//menempatkan obyek batangMenu pada frame
setJMenuBar(batangMenu);
//deklarasi & definisi obyek JMenu bernama menu
JMenu menu = new Jmenu("Menu");
//menempatkan obyek menu pada obyek batangMenu
batangMenu.add(menu);
//mendefinisikan obyek item yang telah dideklarasikan sebelumnya
item = new JMenuItem("Tentang JKonverter", cekIcon("JKonverter.png"));
//menempatkan obyek item pada obyek menu
menu.add(item);


Perhatikan baris kode 
item = new JMenuItem("Tentang JKonverter", cekIcon("JKonverter.png"));  

Baris   tersebut   berisi   pendefinisian   obyek   item   berkelas   JMenuItem   yang   telah 
dideklarasikan sebelumnya menggunakan salah satu konstruktor yang telah disediakan oleh 
kelas javax.swing.JMenuItem. Konstruktor tersebut memiliki dua argumen, yakni argumen 
pertama  berisi   string   yang   akan   ditampilkan  pada  menu,   argumen  kedua   berisi  gambar 


Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu                                 halaman 9/18
Tri Sapto Adji                                                                           BCC Manokwari


(icon) yang akan tampil bersamaan dengan string tersebut.

Selanjutnya, kita harus mengatur respon apa yang akan diberikan terhadap aksi kepada 
komponen tersebut (Respon apa yang akan terjadi jika obyek  bernama item yang berkelas 
JMenuItem   diklik   tersebut   diklik).   Aksi   yang   diberikan   kepada   obyek   tersebut   disebut 
sebagai   event.   Java   memperlakukan   suatu   event  sebagai  suatu   obyek.  Agar  suatu   event 
dapat   dikenal   oleh   java,   maka   event   tersebut   haruslah   didaftarkan   terlebih   dahulu. 
Pendaftaran dilakukan dengan menambahkan suatu event listener. Event listener pada java 
ada   bermacam­macam,   tergantung   kepada   obyek   apa   yang   dikenai   event   tertentu. 
Misalnya, untuk obyek berkelas JMenuitem, event listener yang dapat diterapkan adalah 
ActionListener.   Cara   mendaftarkannya   adalah   menggunakan   metode   addActionListener 
pada   obyek   berkelas   JMenuitem   tersebut   dengan   parameter­nya   sebuah   obyek   berkelas 
ActionListener.   Obyek   berkelas   ActionListener   yang   kita   gunakan   kali   ini   adalah   tidak 
bernama, sehingga kita hanya menuliskannya sebagai new ActionListener(). (Dalam kasus 
lain kita akan menggunakan obyek ActionListener yang diberi nama).
Dalam   kelas   ActionListener   sendiri   terdapat   sebuah   metode   abstrak   bernama 
actionPerformed   yang   bertipe   void   (tidak   memiliki   nilai   kembalian).   Anda   harus 
mendefinisikan sendiri rutin aksi yang akan dilakukannya pada obyek berkelas ActionEvent.
Kemudian kita harus mengatur agar obyek bernama item berkelas JMenuItem ini nantinya 
apabila diklik menggunakan mouse akan menampilkan keterangan dari program konverter 
suhu   kita.   Caranya   cukup   dengan   menambahkan   metode   addActionListener   pada   obyek 
item   ini,   lalu   menciptakan   suatu   obyek   yang   mengimplementasikan   ActionListener   yang 
mengatur respon yang diberikan jika item ini diklik. Source kodenya adalah :

                 item.addActionListener(new ActionListener() {
                       public void actionPerformed(ActionEvent ae){
                             if(ae.getSource() == item) keterangan();
                       }
                 });


Method  actionPerformed(ActionEvent               ae)  merupakan   abstract   method   yang   akan 

dijalankan dengan pemicunya berupa obyek dari ActionEvent yang akan membaca kejadian 
atau   aksi   yang   dilakukan   oleh   pengguna.   Berdasarkan   ActionEvent   inilah   suatu 
actionPerformed dikerjakan. Isi dari blok method ini adalah sebuah baris kode yang kita 

Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu                                   halaman 10/18
Tri Sapto Adji                                                                              BCC Manokwari


definisikan sendiri, yakni  if(ae.getSource() == item) keterangan();  yang menyatakan 
bahwa jika aksi yang diberikan adalah bersumber dari obyek bernama item (yang berkelas 
JMenuItem   sebagaimana   telah   didefinisikan   sebelumnya),   maka   suatu   method   bernama 
keterangan( ) akan dikerjakan.   Method keterangan( ) sendiri adalah suatu metode yang  
didefinisikan   sendiri   oleh   kita,   yakni   untuk   menampilkan   suatu   kotak   berisi   pesan   atau 
informasi   tentang   program   ini.   Method   keterangan(   )   ini   dapat   dilihat   pada   baris­baris 
terakhir dari source kode program tersebut.
       private void keterangan() {
             JOptionPane.showMessageDialog(
                   null,
                       "<html><h1>JKonverter</h1><hr> <h2>Program untuk mengkonversi Suhu</h2>" +
                       "<br>Dibuat oleh Tri Sapto Adji, S.Pd."+
                       "<br>@Manokwari, Papua Barat Indonesia<br>Oktober 2011"+
                       "<br><br>JKonverter by Tri Sapto Adji, S.Pd. is a Freeware."+
                       "<br>It was created in order to be usefull"+
                       "<br>but "Without Any Guarantee" for the mistake"+
                       "<br>or error that'll happen by using this program." +
                       "<br>Use it at your own risk!",
                       "Tentang JKonverter",
                       1, cekIcon("JKonverter1.png")
                 );
       }


Sebelum kita lanjutkan dengan komponen­komponen lainnya, coba terlebih dahulu Anda 
kompilasi program ini dengan perintah :
                                      javac KonverterSuhu.java
Jika   tidak   ada   kesalahan   maka   kita   dapat   melanjutkan   dengan   pengaturan   komponen­
komponen lainnya. Jika ada kesalahan, coba cek apa keterangan yang muncul pada konsol 
dan dimana (baris ke berapa) kesalahan(­kesalahan) tersebut terjadi. Perbaiki kemudian 
kompilasi   ulang   dengan   perintah   tersebut   di   atas.   Kemudian   coba   jalankan   program 
tersebut dengan perintah :
                                          java KonverterSuhu
Jika berhasil akan muncul sebuah antar muka yang berukuran sangat kecil sebagaimana 
gambar berikut. 




Gunakan (drag) mouse untuk memperbesar ukuran frame program tersebut. Program Anda tersebut


Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu                                     halaman 11/18
Tri Sapto Adji                                                                      BCC Manokwari


berukuran sangat kecil karena Anda menyertakan kode ks.pack() dalam method main. Baris
kode ini digunakan untuk mengatur ukuran frame agar menyesuaikan dengan ukuran komponen
dalam frame tersebut. Nah, karena program Anda tersebut hanya menyertakan sebuah komponen
yakni menu yang berkelas JMenu dan belum menyertakan komponen-komponen lainnya di
dalamnya maka ukurannya menjadi seperti yang Anda lihat (selebar dan setinggi komponen menu).
Anda jangan khawatir karena nantinya setelah kita menambahkan komponen-komponen seperti
JButton, JLabel dan lainnya, maka ukuran jendela frame dengan sendirinya akan menyesuaikan
dengan komponen-komponen tersebut. Jika Anda menginginkan panjang dan lebar tertentu, Anda
dapat mengganti baris kode ks.pack(); tersebut dengan kode ks.setSize(x,y); dimana x adalah
ukuran lebar frame dalam satuan pixel dan y adalah ukuran tinggi frame dalam satuan pixel.




Jika Anda mengklik Menu Menu > Tentang Jkonverter, maka akan tampil sebuah kotak 
dialog sebagai berikut :




Klik tombol OK untuk menutup kotak dialog tersebut, kemudian klik tombol exit di sudut 
atas program JKonverter untuk menutup program tersebut.
Kita lanjutkan dengan menempatkan komponen­komponen lainnya. Komponen­komponen 

Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu                             halaman 12/18
Tri Sapto Adji                                                                         BCC Manokwari


tersebut kita atur dalam tiga posisi penempatan, yakni posisi di atas, tengah dan bawah. 
Untuk itu Anda harus membuat tiga buah obyek kontainer berkelas JPanel, dan mengatur 
layoutnya dengan kelas BorderLayout. Kelas BorderLayout adalah sebuah kelas pada java 
untuk mengatur tata letak komponen dalam suatu kontainer pada posisi atas (NORTH), 
kanan   (EAST),   bawah   (SOUTH),   kiri   (WEST)   dan   tengah   (CENTER).   Jadi   disini   Anda 
meletakkan tiga buah obyek kontainer lainnya (berkelas JPanel) yang lebih kecil di dalam 
kontainer induk (berkelas JFrame) yang merupakan jendela program Anda. Masing­masing 
obyek kontainer berkelas JPanel tersebut nantinya akan diisi dengan komponen­komponen 
yang   telah   dideklarasikan   sebelumnya,   yakni   obyek­obyek   berkelas   JComboBox, 
JFormattedTextField dan JLabel.
Berikut   adalah  source   code  untuk   mendeklarasikan   dan   mendefinisikan   komponen   judul 
berkelas JLabel dan kontainer berkelas JPanel, kemudian menempatkan komponen judul 
tersebut pada kontainer berkelas JLabel tersebut.
    JLabel judul = new JLabel("<html><h1><center>KONVERTER SUHU</center></h1></html>");
    JPanel panel0 = new JPanel();
    panel0.add(judul);
Perhatikan   pada   pernyataan­pernyataan   yang   terdapat   dalam   method   keterangan   dan 
dalam pendefinisian obyek judul berikut ini :
    JLabel judul = new JLabel("<html><h1><center>KONVERTER SUHU</center></h1></html>");

Terdapat penggunaan skrip html. Hal ini karena memang java dapat menggunakan skrip 
tersebut   untuk   mengatur   tampilan   dari   suatu   teks   (string).   Anda   boleh   saja   tidak 
menggunakan kode­kode html jika hanya ingin menampilkan teks yang biasa­biasa saja. 
Selanjutnya adalah penciptaan obyek berkelas JPanel bernama panel0, dan menempatkan 
komponen   judul   tersebut   ke   dalamnya.   Sedangkan   obyek­obyek   lainnya   kecuali   obyek 
hitung   yang   berkelas   JButton   ditempatkan   pada   obyek   panel1   dengan   layout­nya 
BorderLayout dengan 4 baris 3 kolom, jarak antara baris 10px dan jarak antara kolom 5px. 
Penempatannya mulai dari kiri ke kanan hingga sebanyak 3 kolom terisi kemudian turun ke 
baris berikutnya. 

Komponen terakhir adalah obyek berkelas JButton yang bernama hitung yang ditempatkan 
pada   obyek   JPanel   yakni   panel2   dengan   alignment   tengah   (center).   Sampai   disini 
pengaturan tata letak seluruh komponen telah selesai. 


Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu                                halaman 13/18
Tri Sapto Adji                                                                                  BCC Manokwari


Perhatikan gambar berikut.




Jika Anda melihat kembali kepada  source code  program KonverterSuhu kita, terdapat tiga 
(3)   event   listener   lainnya   yang   didaftarkan   pada   obyek   daftar1,   daftar2   yang   berkelas 
JComboBox dan obyek button yang berkelas JButton. Sama seperti obyek item, kita juga 
menggunakan   metode   addActionListener   untuk   mengatur   respon­respon   yang   disiapkan 
untuk ketiga obyek tersebut. 

Kita  lihat bahwa obyek event yang  dikenakan pada obyek daftar1  sebenarnya ditujukan 
untuk   mengatur   tulisan   apa   yang   akan   ditampilkan   pada   obyek   satuan1   yang   berkelas 
JLabel.   Obyek   satuan1   tersebut   kita   gunakan   untuk   menampilkan   satuan   suhu   sesuai 
dengan pilihan item yang terdapat pada obyek daftar1 yang berkelas JComboBox tersebut. 
           daftar1.addActionListener(new ActionListener() {
                 public void actionPerformed(ActionEvent ae){
                       JComboBox combo = (JComboBox)ae.getSource();
                       String s = (String)combo.getSelectedItem();
                          String t = (s.equals("Kelvin"))?s:"<html><sup>o</sup>"+s+"</html>";
                          satuan1.setText(t);
                          teks2.setValue(null);
                  }
           });
Dari   baris   kode   tersebut,   kita   lihat   bahwa   jika   item   terpilih   dari   obyek   combo   berkelas 
JComboBox   adalah   Kelvin,   maka   yang   akan   ditampilkan   adalah   sama   dengan   pilihan 
tersebut (yakni Kelvin). Selain itu maka yang akan ditampilkan adalah teks   o<nama item 
terpilih>, sehingga jika yang terpilih adalah item Celcius maka yang ditampilkan adalah 
teks  oCelcius, jika item Fahrenheit yang terpilih maka yang akan ditampilkan adalah teks 
o
    Fahrenheit dan jika item Reamur yang terpilih maka yang akan ditampilkan adalah teks 
o
    Reamur.   Jadi   hanya   jika   item   terpilih   adalah   Kelvin   maka   teks   yang   akan   ditampilkan 


Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu                                          halaman 14/18
Tri Sapto Adji                                                                               BCC Manokwari


adalah sama dengan item pilihan tersebut (yakni Kelvin tanpa  o).

Hal   yang   sama   juga   diterapkan   pada   obyek   daftar2,   obyek   event­nya   digunakan   untuk 
mengatur tampilan dari obyek satuan2 yang berkelas JLabel.
        daftar2.addActionListener(new ActionListener() {
              public void actionPerformed(ActionEvent ae){
                    JComboBox combo = (JComboBox)ae.getSource();
                    String s = (String)combo.getSelectedItem();
                        String t = (s.equals("Kelvin"))?s:"<html><sup>o</sup>"+s+"</html>";
                        satuan2.setText(t);
                        teks2.setValue(null);
                 }
        });
Terakhir adalah event listener yang diberikan kepada obyek bernama button yang berkelas 
JButton. Obyek ini kita gunakan untuk melakukan perhitungan konversi suhu berdasarkan 
nilai   yang   diisi   pada   kotak   isian   teks1   yang   berkelas   JFormattedTextField,   dan   pilihan 
besaran suhu yang dipilih pada kotak pilihan (combo box) daftar1 dan daftar2 yang sudah 
dibahas sebelumnya. Nilai index dari item yang dipilih pada kedua kotak pilihan tersebut 
ditampung dalam variabel larik hasil bertipe integer. Karena ada dua kotak pilihan (yakni 
daftar1 dan daftar2) maka variabel hasil ini juga memiliki panjang 2. Hal ini dapat kita lihat 
pada pernyataan definisi : 

                                         hasil = new int[2];

Selanjutnya kita atur agar supaya komponen pertama dari variabel hasil (yakni hasil[0]) 
tersebut   diisi   dengan   nilai   index   terpilih   dari   obyek   daftar1   (berkelas   JcomboBox), 
sedangkan komponen keduanya (yakni hasil[1]) diisi dengan nilai index terpilih dari obyek 
daftar2.   Variabel   obyek   daftar1   sendiri   berisi   empat   (4)   buah   item,   yakni   Celscius, 
Fahrenheit, Kelvin dan Reamur. Penomoran index dari keempat item tersebut dimulai dari 
0,   sehingga   nilai   index   yang   dimiliki   oleh   item­item   tersebut   adalah   :   Celcius   =   0, 
Fahrenheit =1, Kelvin = 2 dan Reamur = 3. Hal yang persis sama juga terjadi pada variable 
obyek daftar2. Hal ini dapat diwujudkan melalui pernyataan :
                                hasil[0] = daftar1.getSelectedIndex();
                                hasil[1] = daftar2.getSelectedIndex();
Sehingga apabila user memilih item Celcius pada obyek daftar1 tersebut kemudian memilih 
item Kelvin pada obyek daftar2 maka nilai dari variabel hasil[0] akan diisi dengan nilai 0 
dan variable hasil[1] diisi dengan nilai 2. Kemudian saat tombol button diklik program java 


Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu                                      halaman 15/18
Tri Sapto Adji                                                                                BCC Manokwari


akan memeriksa action apa yang cocok untuk dikerjakan. Untuk itu tombol button (obyek 
button yang berkelas JButton) sendiri kita daftarkan sebagai sebuah obyek ActionListener. 
        hitung = new JButton("Konversi");
        hitung.addActionListener(new ActionListener() {
                 public void actionPerformed (ActionEvent ae) {
                       hasil = new int[2];
                       hasil[0] = daftar1.getSelectedIndex();
                       hasil[1] = daftar2.getSelectedIndex();
                       if(teks1.getValue()==null) return;
                       if(hasil[0]==hasil[1]) teks2.setValue(teks1.getValue());
                       if(hasil[0]!=hasil[1]) {
                                if(hasil[0]==0   &&   hasil[1]==1)   teks2.setValue(celciusToFahrenheit());
                                if(hasil[0]==0   &&   hasil[1]==2)   teks2.setValue(celciusToKelvin());
                                if(hasil[0]==0   &&   hasil[1]==3)   teks2.setValue(celciusToReamur());
                                if(hasil[0]==1   &&   hasil[1]==0)   teks2.setValue(fahrenheitToCelcius());
                                if(hasil[0]==1   &&   hasil[1]==2)   teks2.setValue(fahrenheitToKelvin());
                                if(hasil[0]==1   &&   hasil[1]==3)   teks2.setValue(fahrenheitToReamur());
                                if(hasil[0]==2   &&   hasil[1]==0)   teks2.setValue(kelvinToCelcius());
                                if(hasil[0]==2   &&   hasil[1]==1)   teks2.setValue(kelvinToFahrenheit());
                                if(hasil[0]==2   &&   hasil[1]==3)   teks2.setValue(kelvinToReamur());
                                if(hasil[0]==3   &&   hasil[1]==0)   teks2.setValue(reamurToCelcius());
                                if(hasil[0]==3   &&   hasil[1]==1)   teks2.setValue(reamurToFahrenheit());
                                if(hasil[0]==3   &&   hasil[1]==2)   teks2.setValue(reamurToKelvin());
                                }
                        }
                        }
                 });
Ternyata pernyataan yang cocok adalah pernyataan :

            if(hasil[0]==0 && hasil[1]==2) teks2.setValue(celciusToKelvin());
Pernyataan   tersebut   menyatakan   bahwa   jika   variabel   hasil[0]   bernilai   0   (item   Celcius 
dipilih)   dan   variabel   hasil[1]   bernilai   2   (item   Kelvin   dipilih)   maka   obyek   teks2   (yang 
berkelas   JformattedTextField)   akan   diisi   dengan   nilai   hasil   perhitungan   yang   dikerjakan 
oleh fungsi celciusToKelvin( ). Fungsi celciusToKelvin sendiri didefinisikan sebagai sebuah 
fungsi dengan nilai kembalian bertipe Float yang melakukan perhitungan : K = C + 273. 
Dalam program java rumus tersebut dikerjakan oleh blok pernyataan berikut :
private float celciusToKelvin() {
      float celcius = Float.valueOf(teks1.getValue().toString()).floatValue();
      float Kelvin = celcius + 273;
      return Kelvin;
        }
Perhatikan   bahwa   yang   dihitung   adalah   nilai   yang   diambil   dari   variabel   teks1   yang 
dikonversi menjadi bilangan bertipe float melalui baris pernyataan :

        float celcius = Float.valueOf(teks1.getValue().toString()).floatValue();
Kemudian dilakukan perhitungan : 


Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu                                       halaman 16/18
Tri Sapto Adji                                                                              BCC Manokwari


                                  float Kelvin = celcius + 273;

Hasilnya   dijadikan   sebagai   nilai   kembalian   dari   fungsi   celciusToKelvin   tersebut   melalui 
pernyataan : 

                                            return Kelvin;

Bagaimana jika kotak isian teks1 belum diisi nilai apapun atau masih kosong? Pernyataan 
berikut­lah yang akan dikerjakan :
                              if(teks1.getValue()==null) return;
Pernyataan   tersebut   berarti,   jika   variabel   teks1   masih   kosong   maka   tidak   ada   aktivitas 
apapun yang dilakukan. Sedangkan bila kedua daftar pilihan suhu mempunyai nilai yang 
sama   (misalnya   Celcius   dan   Celcius,   atau   Fahrenheit   dan   Fahrenheit)   maka   baris 
pernyataan berikut akan dikerjakan :

                 if(hasil[0]==hasil[1]) teks2.setValue(teks1.getValue());
Kita lihat dari pernyataan tersebut bahwa jika item yang terpilih pada kedua list pilihan 
adalah sama, maka nilai pada teks2 akan di­set sama dengan nilai pada teks1. 

Pilihan­pilihan   lainnya   (12   pilihan   sesuai   formula   pada   tabel   di   halaman   pertama) 
diterjemahkan menjadi 12 fungsi (method yang memiliki nilai kembalian) yang berbeda, 
dan akan dijalankan pada saat obyek button diklik sesuai dengan kondisi dari item­item 
terpilih (nilai indeks dari variabel hasil[0] dan hasil[1]).
       if(hasil[0]==0       &&   hasil[1]==1)    teks2.setValue(celciusToFahrenheit());
       if(hasil[0]==0       &&   hasil[1]==2)    teks2.setValue(celciusToKelvin());
       if(hasil[0]==0       &&   hasil[1]==3)    teks2.setValue(celciusToReamur());
       if(hasil[0]==1       &&   hasil[1]==0)    teks2.setValue(fahrenheitToCelcius());
       if(hasil[0]==1       &&   hasil[1]==2)    teks2.setValue(fahrenheitToKelvin());
       if(hasil[0]==1       &&   hasil[1]==3)    teks2.setValue(fahrenheitToReamur());
       if(hasil[0]==2       &&   hasil[1]==0)    teks2.setValue(kelvinToCelcius());
       if(hasil[0]==2       &&   hasil[1]==1)    teks2.setValue(kelvinToFahrenheit());
       if(hasil[0]==2       &&   hasil[1]==3)    teks2.setValue(kelvinToReamur());
       if(hasil[0]==3       &&   hasil[1]==0)    teks2.setValue(reamurToCelcius());
       if(hasil[0]==3       &&   hasil[1]==1)    teks2.setValue(reamurToFahrenheit());
       if(hasil[0]==3       &&   hasil[1]==2)    teks2.setValue(reamurToKelvin());
Pada bagian akhir dari program kita, sebelum method keterangan terdapat sebuah method 
yang berisi pernyataan­pernyataan sebagai berikut :
       private ImageIcon cekIcon(String path) {
             URL imgURL = KonverterSuhu.class.getResource(path);
             if(imgURL != null) {
                   return new ImageIcon(imgURL);
             }else {
                   System.err.println("Maaf, icon pada " + path + " tidak ada");
                   return null;

Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu                                     halaman 17/18
Tri Sapto Adji                                                                 BCC Manokwari


                 }
       }
Metode   cekIcon   tersebut   kita   buat   untuk   memudahkan   kita   dalam   memilih   dan 
menampilkan icon atau gambar yang ingin kita tampilkan pada program tersebut. Sehingga 
saat kita  perlu memilih  dan ingin menampilkan sebuah  gambar, kita  tinggal memanggil 
metode tersebut dengan argumen­nya adalah URL (lokasi dan nama) dari gambar tersebut.

Selamat mencoba … !




Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu                         halaman 18/18

Contenu connexe

Dernier

Prov.Jabar_1504_Pengumuman Seleksi Tahap 2_CGP A11 (2).pdf
Prov.Jabar_1504_Pengumuman Seleksi Tahap 2_CGP A11 (2).pdfProv.Jabar_1504_Pengumuman Seleksi Tahap 2_CGP A11 (2).pdf
Prov.Jabar_1504_Pengumuman Seleksi Tahap 2_CGP A11 (2).pdfIwanSumantri7
 
Memperkasakan Dialog Prestasi Sekolah.pptx
Memperkasakan Dialog Prestasi Sekolah.pptxMemperkasakan Dialog Prestasi Sekolah.pptx
Memperkasakan Dialog Prestasi Sekolah.pptxsalmnor
 
Modul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptx
Modul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptxModul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptx
Modul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptxRIMA685626
 
Aksi Nyata Disiplin Positif Keyakinan Kelas untuk SMK
Aksi Nyata Disiplin Positif Keyakinan Kelas untuk SMKAksi Nyata Disiplin Positif Keyakinan Kelas untuk SMK
Aksi Nyata Disiplin Positif Keyakinan Kelas untuk SMKgamelamalaal
 
DAFTAR PPPK GURU KABUPATEN PURWOREJO TAHUN 2024
DAFTAR PPPK GURU KABUPATEN PURWOREJO TAHUN 2024DAFTAR PPPK GURU KABUPATEN PURWOREJO TAHUN 2024
DAFTAR PPPK GURU KABUPATEN PURWOREJO TAHUN 2024RoseMia3
 
CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7IwanSumantri7
 
Pengenalan Figma, Figma Indtroduction, Figma
Pengenalan Figma, Figma Indtroduction, FigmaPengenalan Figma, Figma Indtroduction, Figma
Pengenalan Figma, Figma Indtroduction, FigmaAndreRangga1
 
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxBab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxssuser35630b
 
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKAKELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKAppgauliananda03
 
Kenakalan Remaja (Penggunaan Narkoba).ppt
Kenakalan Remaja (Penggunaan Narkoba).pptKenakalan Remaja (Penggunaan Narkoba).ppt
Kenakalan Remaja (Penggunaan Narkoba).pptnovibernadina
 
MODUL PENDIDIKAN PANCASILA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL PENDIDIKAN PANCASILA KELAS 6 KURIKULUM MERDEKA.pdfMODUL PENDIDIKAN PANCASILA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL PENDIDIKAN PANCASILA KELAS 6 KURIKULUM MERDEKA.pdfAndiCoc
 
MODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdfMODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdfAndiCoc
 
Program Kerja Public Relations - Perencanaan
Program Kerja Public Relations - PerencanaanProgram Kerja Public Relations - Perencanaan
Program Kerja Public Relations - PerencanaanAdePutraTunggali
 
Salinan dari JUrnal Refleksi Mingguan modul 1.3.pdf
Salinan dari JUrnal Refleksi Mingguan modul 1.3.pdfSalinan dari JUrnal Refleksi Mingguan modul 1.3.pdf
Salinan dari JUrnal Refleksi Mingguan modul 1.3.pdfWidyastutyCoyy
 
Kanvas BAGJA prakarsa perubahan Ahyar.pdf
Kanvas BAGJA prakarsa perubahan Ahyar.pdfKanvas BAGJA prakarsa perubahan Ahyar.pdf
Kanvas BAGJA prakarsa perubahan Ahyar.pdfAkhyar33
 
E-modul Materi Ekosistem untuk kelas X SMA
E-modul Materi Ekosistem untuk kelas X SMAE-modul Materi Ekosistem untuk kelas X SMA
E-modul Materi Ekosistem untuk kelas X SMAAmmar Ahmad
 
MODUL PENDIDIKAN PANCASILA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL PENDIDIKAN PANCASILA KELAS 6 KURIKULUM MERDEKA.pdfMODUL PENDIDIKAN PANCASILA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL PENDIDIKAN PANCASILA KELAS 6 KURIKULUM MERDEKA.pdfAndiCoc
 
power point bahasa indonesia "Karya Ilmiah"
power point bahasa indonesia "Karya Ilmiah"power point bahasa indonesia "Karya Ilmiah"
power point bahasa indonesia "Karya Ilmiah"baimmuhammad71
 
OPTIMALISASI KOMUNITAS BELAJAR DI SEKOLAH.pptx
OPTIMALISASI KOMUNITAS BELAJAR DI SEKOLAH.pptxOPTIMALISASI KOMUNITAS BELAJAR DI SEKOLAH.pptx
OPTIMALISASI KOMUNITAS BELAJAR DI SEKOLAH.pptxDedeRosza
 

Dernier (20)

Prov.Jabar_1504_Pengumuman Seleksi Tahap 2_CGP A11 (2).pdf
Prov.Jabar_1504_Pengumuman Seleksi Tahap 2_CGP A11 (2).pdfProv.Jabar_1504_Pengumuman Seleksi Tahap 2_CGP A11 (2).pdf
Prov.Jabar_1504_Pengumuman Seleksi Tahap 2_CGP A11 (2).pdf
 
Memperkasakan Dialog Prestasi Sekolah.pptx
Memperkasakan Dialog Prestasi Sekolah.pptxMemperkasakan Dialog Prestasi Sekolah.pptx
Memperkasakan Dialog Prestasi Sekolah.pptx
 
Modul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptx
Modul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptxModul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptx
Modul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptx
 
Aksi Nyata Disiplin Positif Keyakinan Kelas untuk SMK
Aksi Nyata Disiplin Positif Keyakinan Kelas untuk SMKAksi Nyata Disiplin Positif Keyakinan Kelas untuk SMK
Aksi Nyata Disiplin Positif Keyakinan Kelas untuk SMK
 
DAFTAR PPPK GURU KABUPATEN PURWOREJO TAHUN 2024
DAFTAR PPPK GURU KABUPATEN PURWOREJO TAHUN 2024DAFTAR PPPK GURU KABUPATEN PURWOREJO TAHUN 2024
DAFTAR PPPK GURU KABUPATEN PURWOREJO TAHUN 2024
 
CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7
 
Pengenalan Figma, Figma Indtroduction, Figma
Pengenalan Figma, Figma Indtroduction, FigmaPengenalan Figma, Figma Indtroduction, Figma
Pengenalan Figma, Figma Indtroduction, Figma
 
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxBab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
 
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKAKELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
 
Kenakalan Remaja (Penggunaan Narkoba).ppt
Kenakalan Remaja (Penggunaan Narkoba).pptKenakalan Remaja (Penggunaan Narkoba).ppt
Kenakalan Remaja (Penggunaan Narkoba).ppt
 
MODUL PENDIDIKAN PANCASILA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL PENDIDIKAN PANCASILA KELAS 6 KURIKULUM MERDEKA.pdfMODUL PENDIDIKAN PANCASILA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL PENDIDIKAN PANCASILA KELAS 6 KURIKULUM MERDEKA.pdf
 
MODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdfMODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdf
 
Program Kerja Public Relations - Perencanaan
Program Kerja Public Relations - PerencanaanProgram Kerja Public Relations - Perencanaan
Program Kerja Public Relations - Perencanaan
 
Salinan dari JUrnal Refleksi Mingguan modul 1.3.pdf
Salinan dari JUrnal Refleksi Mingguan modul 1.3.pdfSalinan dari JUrnal Refleksi Mingguan modul 1.3.pdf
Salinan dari JUrnal Refleksi Mingguan modul 1.3.pdf
 
Intellectual Discourse Business in Islamic Perspective - Mej Dr Mohd Adib Abd...
Intellectual Discourse Business in Islamic Perspective - Mej Dr Mohd Adib Abd...Intellectual Discourse Business in Islamic Perspective - Mej Dr Mohd Adib Abd...
Intellectual Discourse Business in Islamic Perspective - Mej Dr Mohd Adib Abd...
 
Kanvas BAGJA prakarsa perubahan Ahyar.pdf
Kanvas BAGJA prakarsa perubahan Ahyar.pdfKanvas BAGJA prakarsa perubahan Ahyar.pdf
Kanvas BAGJA prakarsa perubahan Ahyar.pdf
 
E-modul Materi Ekosistem untuk kelas X SMA
E-modul Materi Ekosistem untuk kelas X SMAE-modul Materi Ekosistem untuk kelas X SMA
E-modul Materi Ekosistem untuk kelas X SMA
 
MODUL PENDIDIKAN PANCASILA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL PENDIDIKAN PANCASILA KELAS 6 KURIKULUM MERDEKA.pdfMODUL PENDIDIKAN PANCASILA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL PENDIDIKAN PANCASILA KELAS 6 KURIKULUM MERDEKA.pdf
 
power point bahasa indonesia "Karya Ilmiah"
power point bahasa indonesia "Karya Ilmiah"power point bahasa indonesia "Karya Ilmiah"
power point bahasa indonesia "Karya Ilmiah"
 
OPTIMALISASI KOMUNITAS BELAJAR DI SEKOLAH.pptx
OPTIMALISASI KOMUNITAS BELAJAR DI SEKOLAH.pptxOPTIMALISASI KOMUNITAS BELAJAR DI SEKOLAH.pptx
OPTIMALISASI KOMUNITAS BELAJAR DI SEKOLAH.pptx
 

En vedette

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

En vedette (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

My javanote02

  • 1. Tri Sapto Adji BCC Manokwari Membuat Aplikasi Konverter Suhu Pada   pembahasan   sebelumnya   kita   telah   belajar   bagaimana   membuat   dan   menjalankan  aplikasi   sederhana,   baik   itu   berbasis   konsol   maupun   GUI   (Graphical   User   Interface)  menggunakan   bahasa   pemrograman   Java.   Pada   workshop   yang   kedua   ini,   kita   akan  meningkat ke jenjang yang sedikit lebih rumit untuk membuat sebuah aplikasi Konverter  Suhu. Aplikasi ini dibuat untuk mampu melakukan konversi dari dan menjadi empat jenis  satuan suhu yang umum digunakan yakni : Celcius, Fahrenheit, Kelvin dan Reamur. Rumus atau formula yang digunakan adalah sebagai berikut : Dari Satuan Ke Satuan Rumus Celcius (C) Fahrenheit (F) 9 F =  C + 32 5 Kelvin (K) K = C + 273 Reamur (R) 4 R =  C 5 Fahrenheit (F) Celcius (C) 5 C =  (F­32) 9 Kelvin (K) 5 K =  (F­32)+273 9 Reamur (R) 4 R =  (F­32) 9 Kelvin (K) Celcius (C) C = K­273 Fahrenheit (F) 9 F =  (K­273)+32 5 Reamur (R) 4 R =  (K­273) 5 Reamur (R) Celcius (C) 5 C =  R 4 Fahrenheit (F) 9 F =  R + 32 4 Kelvin (K) 5 K =  R + 273 4 Dengan adanya 12 formula diatas, berarti kita harus membuat sebanyak 12 fungsi (metode  yang memiliki nilai balik) yang masing­masing berisi satu perhitungan dari rumus­rumus  tersebut   di   atas.   Fungsi­fungsi   atau   metode­metode   tersebut   nantinya   dirancang   untuk  Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu halaman 1/18
  • 2. Tri Sapto Adji BCC Manokwari mampu menghitung bilangan pecahan, oleh karena itu kita menggunakan tipe data yang  dapat menampung nilai bilangan pecahan, yakni float. Sebelum   sampai   ke   pembuatan   fungsi­fungsi   tersebut,   yang   wajib   kita   lakukan   adalah  membuat desain antar muka yang mampu melakukan hal­hal sebagai berikut : 1. Menampilkan keterangan tentang program. 2. Menerima input bilangan dari user. 3. Menampilkan daftar pilihan satuan suhu yang dapat dipilih oleh user. 4. Menampilkan nama satuan  sesuai  dengan  pilihan  dari  daftar  pilihan  satuan suhu  yang dipilih oleh user. 5. Memerintahkan program melakukan perhitungan sesuai dengan input bilangan dan  satuan suhu yang dipilih oleh user. 6. Menampilkan hasil perhitungan. Komponen­komponen yang dapat digunakan untuk itu adalah : 1. Sebuah   obyek   berkelas   JMenuItem   yang   apabila   diklik   akan   menampilkan  keterangan tentang program. 2. Dua buah obyek berkelas JFormattedTextField berupa kotak isian untuk menerima  input dan  menampilkan output hasil perhitungan. 3. Dua buah obyek berkelas JComboBox berupa daftar pilihan besaran suhu yang akan  dikonversi dan daftar pilihan besaran suhu hasil konversi. 4. Dua   buah   obyek   berkelas   JLabel   untuk   menampilkan   nama   satuan   suhu   sesuai  dengan   nama   besaran   suhu   yang   dipilih   pada   daftar   pilihan,   dan   sebuah   obyek  JLabel   lagi   untuk   menampilkan   judul   di   bagian   atas   program   (seperti   sebuah  heading). 5. Sebuah obyek tombol berkelas JButton untuk memerintahkan program melakukan  perhitungan berdasarkan besaran suhu yang dipilih dan angka yang di­input oleh  user. Berikut adalah source code dari program tersebut : //Berkas KonverterSuhu.java //Author : Tri Sapto Adji, S.Pd. // @Manokwari, Papua Barat, Indonesia import javax.swing.*; Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu halaman 2/18
  • 3. Tri Sapto Adji BCC Manokwari import java.awt.*; import java.awt.event.*; import java.text.*; import javax.swing.text.*; import java.net.URL; public class KonverterSuhu extends JFrame { JMenuItem item; JComboBox daftar1; JComboBox daftar2; JFormattedTextField teks1; JFormattedTextField teks2; JLabel satuan1; JLabel satuan2; JButton hitung; int[] hasil; public static void main(String[] args) { KonverterSuhu ks = new KonverterSuhu(); ks.pack(); PosisiFrame.center(ks);//Membutuhkan file PosisiFrame.class pada direktori kerja ks.setVisible(true); } public KonverterSuhu() { super("JKonverter"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JMenuBar batangMenu = new JMenuBar(); setJMenuBar(batangMenu); JMenu menu = new JMenu("Menu"); batangMenu.add(menu); item = new JMenuItem("Tentang JKonverter", cekIcon("JKonverter.png")); menu.add(item); item.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae){ if(ae.getSource() == item) keterangan(); } }); JLabel judul = new JLabel("<html><h1><center>KONVERTER SUHU</center></h1></html>"); JPanel panel0 = new JPanel(); panel0.add(judul); JPanel panel1 = new JPanel(); panel1.setLayout(new GridLayout(4,3,10,5)); panel1.add(new JLabel("Dari :")); panel1.add(new JLabel("Nilai :")); panel1.add(new JLabel("")); String[] suhu = {"Celcius", "Fahrenheit", "Kelvin", "Reamur"}; daftar1 = new JComboBox (suhu); daftar1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae){ JComboBox combo = (JComboBox)ae.getSource(); String s = (String)combo.getSelectedItem(); String t = (s.equals("Kelvin"))?s:"<html><sup>o</sup>"+s+"</html>"; satuan1.setText(t); teks2.setValue(null); } }); panel1.add(daftar1); teks1 = new JFormattedTextField(NumberFormat.getNumberInstance()); Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu halaman 3/18
  • 4. Tri Sapto Adji BCC Manokwari teks1.setColumns(16); panel1.add(teks1); satuan1 = new JLabel("<html><sup>o</sup>"+(String)daftar1.getSelectedItem()+"</html>"); panel1.add(satuan1); panel1.add(new JLabel("Menjadi :")); panel1.add(new JLabel("Nilai :")); panel1.add(new JLabel("")); daftar2 = new JComboBox (suhu); panel1.add(daftar2); teks2 = new JFormattedTextField(NumberFormat.getNumberInstance()); teks2.setColumns(16); teks2.setEditable(false); panel1.add(teks2); daftar2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae){ JComboBox combo = (JComboBox)ae.getSource(); String s = (String)combo.getSelectedItem(); String t = (s.equals("Kelvin"))?s:"<html><sup>o</sup>"+s+"</html>"; satuan2.setText(t); teks2.setValue(null); } }); satuan2 = new JLabel("<html><sup>o</sup>"+(String)daftar1.getSelectedItem()+"</html>"); panel1.add(satuan2); getContentPane().add(panel0,BorderLayout.NORTH); getContentPane().add(panel1, BorderLayout.CENTER); hitung = new JButton("Konversi"); hitung.addActionListener(new ActionListener() { public void actionPerformed (ActionEvent ae) { hasil = new int[2]; hasil[0] = daftar1.getSelectedIndex(); hasil[1] = daftar2.getSelectedIndex(); if(teks1.getValue()==null) return; if(hasil[0]==hasil[1]) teks2.setValue(teks1.getValue()); if(hasil[0]!=hasil[1]) { if(hasil[0]==0 && hasil[1]==1) teks2.setValue(celciusToFahrenheit()); if(hasil[0]==0 && hasil[1]==2) teks2.setValue(celciusToKelvin()); if(hasil[0]==0 && hasil[1]==3) teks2.setValue(celciusToReamur()); if(hasil[0]==1 && hasil[1]==0) teks2.setValue(fahrenheitToCelcius()); if(hasil[0]==1 && hasil[1]==2) teks2.setValue(fahrenheitToKelvin()); if(hasil[0]==1 && hasil[1]==3) teks2.setValue(fahrenheitToReamur()); if(hasil[0]==2 && hasil[1]==0) teks2.setValue(kelvinToCelcius()); if(hasil[0]==2 && hasil[1]==1) teks2.setValue(kelvinToFahrenheit()); if(hasil[0]==2 && hasil[1]==3) teks2.setValue(kelvinToReamur()); if(hasil[0]==3 && hasil[1]==0) teks2.setValue(reamurToCelcius()); if(hasil[0]==3 && hasil[1]==1) teks2.setValue(reamurToFahrenheit()); Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu halaman 4/18
  • 5. Tri Sapto Adji BCC Manokwari if(hasil[0]==3 && hasil[1]==2) teks2.setValue(reamurToKelvin()); } } }); JPanel panel2 = new JPanel(); panel2.setLayout(new FlowLayout(FlowLayout.CENTER)); panel2.add(hitung); getContentPane().add(panel2, BorderLayout.SOUTH); } private float celciusToFahrenheit() { float celcius = Float.valueOf(teks1.getValue().toString()).floatValue(); float Fahrenheit = 9f/5 * celcius + 32; return Fahrenheit; } private float celciusToKelvin() { float celcius = Float.valueOf(teks1.getValue().toString()).floatValue(); float Kelvin = celcius + 273; return Kelvin; } private float celciusToReamur() { float celcius = Float.valueOf(teks1.getValue().toString()).floatValue(); float Reamur = 4f/5 * celcius; return Reamur; } private float fahrenheitToCelcius() { float fahrenheit = Float.valueOf(teks1.getValue().toString()).floatValue(); float Celcius = 5f/9 * (fahrenheit - 32); return Celcius; } private float fahrenheitToKelvin() { float fahrenheit = Float.valueOf(teks1.getValue().toString()).floatValue(); float Kelvin = 5f/9*(fahrenheit-32)+273; return Kelvin; } private float fahrenheitToReamur() { float fahrenheit = Float.valueOf(teks1.getValue().toString()).floatValue(); float Reamur = 4f/9*(fahrenheit-32); return Reamur; } private float kelvinToCelcius() { float kelvin = Float.valueOf(teks1.getValue().toString()).floatValue(); float Celcius = kelvin-273; return Celcius; } private float kelvinToFahrenheit() { float kelvin = Float.valueOf(teks1.getValue().toString()).floatValue(); float Fahrenheit = 9f/5 * (kelvin-273)+32; return Fahrenheit; Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu halaman 5/18
  • 6. Tri Sapto Adji BCC Manokwari } private float kelvinToReamur() { float kelvin = Float.valueOf(teks1.getValue().toString()).floatValue(); float Reamur = 4f/5 * (kelvin-273); return Reamur; } private float reamurToCelcius() { float reamur = Float.valueOf(teks1.getValue().toString()).floatValue(); float Celcius = 5f/4 * reamur; return Celcius; } private float reamurToFahrenheit() { float reamur = Float.valueOf(teks1.getValue().toString()).floatValue(); float Fahrenheit = 9f/4 * reamur + 32; return Fahrenheit; } private float reamurToKelvin() { float reamur = Float.valueOf(teks1.getValue().toString()).floatValue(); float Kelvin = 5f/4 * reamur + 273; return Kelvin; } private ImageIcon cekIcon(String path) { URL imgURL = KonverterSuhu.class.getResource(path); if(imgURL != null) { return new ImageIcon(imgURL); }else { System.err.println("Maaf, icon pada " + path + " tidak ada"); return null; } } private void keterangan() { JOptionPane.showMessageDialog( null, "<html><h1>JKonverter</h1><hr> <h2>Program untuk mengkonversi Suhu</h2>" + "<br>Dibuat oleh Tri Sapto Adji, S.Pd."+ "<br>@Manokwari, Papua Barat Indonesia<br>Oktober 2011"+ "<br><br>JKonverter by Tri Sapto Adji, S.Pd. is a Freeware."+ "<br>It was created in order to be usefull"+ "<br>but "Without Any Guarantee" for the mistake"+ "<br>or error that'll happen by using this program." + "<br>Use it at your own risk!", "Tentang JKonverter", 1, cekIcon("JKonverter1.png") ); } } Mari   kita   bahas  source   code  program   tersebut.   Baris­baris   pertama   merupakan   deklarasi  import  yang   harus  disertakan  berkaitan  dengan  berbagai   komponen  yang   kita  gunakan.  Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu halaman 6/18
  • 7. Tri Sapto Adji BCC Manokwari Deklarasi ini harus ada karena memuat berbagai konstruktor dan method dari kelas­kelas  komponen   dalam   program   kita.   Setelah   itu   pendeklarasian   kelas,   yakni   kelas   bernama  KonverterSuhu yang merupakan kelas turunan dari JFrame.  Kodenya adalah : public class KonverterSuhu extends JFrame { ........... ........... } Kemudian kita perlu mendeklarasikan komponen­komponen yang akan digunakan untuk  menampung   nilai   input,   menampilkan   satuan   suhu   dan   output   hasil   perhitungan,   serta  tombol perintah untuk melakukan perhitungan. Hal itu terdapat pada deklarasi : JMenuItem item; JComboBox daftar1; JComboBox daftar2; JFormattedTextField teks1; JFormattedTextField teks2; JLabel satuan1; JLabel satuan2; int[] hasil; JButton hitung; Perhatikan baris terakhir pada deklarasi tersebut, terdapat variabel array atau larik yakni  int[] hasil. Variabel tersebut bukanlah merupakan komponen dari kontainer JFrame yang  akan kita gunakan untuk mendesain antar muka program, tetapi merupakan variabel yang  nantinya akan kita gunakan untuk menampung nilai index dari item pada daftar pilihan  satuan suhu yang  dipilih oleh  pengguna. Berdasarkan nilai  index dari item yang  dipilih  tersebut kita akan mengatur fungsi mana yang nantinya akan dikerjakan oleh program dari  12 perhitungan yang telah dituliskan rumusnya pada pembahasan di awal. Selanjutnya adalah deklarasi dari method main. Sebagaimana kita ketahui, bahwa method  main   harus   ada   pada   sebuah   kelas   program   java   yang   akan   dieksekusi   sebagai   sebuah  program. Di dalamnya terdapat pembentukan obyek berkelas KonverterSuhu (kelas yang  sedang   kita   bahas   pembuatannya   sekarang)   yang   kita   beri   nama   ks.   Terdapat   juga  pengaturan property­nya berupa ukuran frame­nya (ks.pack()), pengaturan posisinya di  tengah   layar   (PosisiFrame.center(ks)),   dan   menampilkan   frame   tersebut   di   layar  (ks.setVisible(true)).   Perhatikan   pernyataan   (PosisiFrame.center(ks)),   pernyataan  tersebut   membutuhkan   adanya   file   PosisiFrame.class   pada   direktori   yang   sama.   Kelas  Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu halaman 7/18
  • 8. Tri Sapto Adji BCC Manokwari tersebut   telah   dibuat   sendiri   sebelumnya.   Di   dalamnya   terdapat   metode   center   untuk  memposisikan   suatu   frame   atau   jendela   di   tengah­tengah   layar.   Jika   Anda   menghapus  pernyataan tersebut, program KonverterSuhu kita masih dapat dijalankan, tetapi posisinya  tidak berada di tengah­tengah layar monitor, melainkan pada sudut kiri atas layar monitor  Anda. Berikut adalah source code dari file PosisiFrame.class tersebut : import javax.swing.JFrame; import java.awt.Dimension; import java.awt.Toolkit; public class PosisiFrame { public static void center(JFrame jf) { Dimension ukuranLayar = Toolkit.getDefaultToolkit().getScreenSize(); Dimension ukuranFrame = jf.getSize(); int x = (ukuranLayar.width - ukuranFrame.width)/2; int y = (ukuranLayar.height - ukuranFrame.height)/2; jf.setLocation(x,y); } } Selanjutnya   adalah   menciptakan   konstruktor   dari   kelas   KonverterSuhu   yang   kita   buat.  Konstruktor adalah method yang harus dituliskan untuk meng­inisialisasi instans dari suatu  kelas. Artinya apabila kelas tersebut dipanggil melalui pembentukan obyek­nya, maka baris­ baris   kode   pada   konstruktor   inilah   yang   akan   dijalankan.   Syarat   utama   dari   suatu  konstruktor adalah bahwa namanya harus sama dengan nama kelas, tetapi tanpa kata kunci  class. Suatu konstruktor boleh memiliki suatu parameter atau argumen sebagaimana halnya  suatu   method   (tetapi   pada   program   kita   kali   ini,   kita   tidak   menyertakan   adanya   suatu  parameter).  Hal pertama yang kita lakukan adalah memberikan judul yang akan ditampilkan pada title   bar dari Frame yang akan ditampilkan, serta mengatur agar frame tersebut dapat ditutup  bila user mengklik tombol exit pada frame tersebut melalui baris kode : //Memberikan judul pada title bar super("JKonverter"); //Mengatur agar jendela/frame dapat ditutup bila tombol exit diklik setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu halaman 8/18
  • 9. Tri Sapto Adji BCC Manokwari Yang harus menjadi perhatian Anda adalah baris kode yang menggunakan kata kunci super  tersebut harus ditulis pada baris pertama dalam method konstruktor, jika ditulis bukan pada  baris pertama akan muncul pesan kesalahan. Sedangkan pernyataan pada baris berikutnya  dapat Anda tulis pada baris mana saja, yang penting masih dalam blok konstruktor tersebut. Selanjutnya   kita   akan   merancang   susunan   antar   muka   program   kita.   Pertama­tama   kita  akan   mengatur   bagaimana   menempatkan   komponen   JMenuItem   item   yang   telah  dideklarasikan   sebelumnya.   JMenuItem   ini   harus   ditempatkan   pada   komponen   JMenu.  Sedangkan JMenu sendiri harus dipasang pada suatu bar yang disebut JMenuBar. Kemudian  obyek JMenuBar ini ditempatkan pada Frame (jendela) program kita. Dengan kata lain, kita  mendeklarasikan   terlebih   dahulu   obyek   berkelas   JMenuBar,   kemudian   mendeklarasikan  obyek   berkelas   JMenu.   Selanjutnya   menempatkan   obyek   JMenu   tersebut   ke   obyek  JMenuBar,   dan   menempatkan   obyek   JMenuBar   tersebut   ke   frame.   Adapun   obyek  JMenuItem   yang   telah   dideklarasikan   sebelumnya   perlu   didefinisikan   terlebih   dahulu  sebelum   ditempatkan   pada   obyek   JMenu   tersebut.   Berikut   adalah  source   code­nya   yang  sudah ditambahkan dengan penjelasan : //deklarasi & definisi obyek JMenuBar bernama batangMenu JMenuBar batangMenu = new JMenuBar(); //menempatkan obyek batangMenu pada frame setJMenuBar(batangMenu); //deklarasi & definisi obyek JMenu bernama menu JMenu menu = new Jmenu("Menu"); //menempatkan obyek menu pada obyek batangMenu batangMenu.add(menu); //mendefinisikan obyek item yang telah dideklarasikan sebelumnya item = new JMenuItem("Tentang JKonverter", cekIcon("JKonverter.png")); //menempatkan obyek item pada obyek menu menu.add(item); Perhatikan baris kode  item = new JMenuItem("Tentang JKonverter", cekIcon("JKonverter.png"));   Baris   tersebut   berisi   pendefinisian   obyek   item   berkelas   JMenuItem   yang   telah  dideklarasikan sebelumnya menggunakan salah satu konstruktor yang telah disediakan oleh  kelas javax.swing.JMenuItem. Konstruktor tersebut memiliki dua argumen, yakni argumen  pertama  berisi   string   yang   akan   ditampilkan  pada  menu,   argumen  kedua   berisi  gambar  Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu halaman 9/18
  • 10. Tri Sapto Adji BCC Manokwari (icon) yang akan tampil bersamaan dengan string tersebut. Selanjutnya, kita harus mengatur respon apa yang akan diberikan terhadap aksi kepada  komponen tersebut (Respon apa yang akan terjadi jika obyek  bernama item yang berkelas  JMenuItem   diklik   tersebut   diklik).   Aksi   yang   diberikan   kepada   obyek   tersebut   disebut  sebagai   event.   Java   memperlakukan   suatu   event  sebagai  suatu   obyek.  Agar  suatu   event  dapat   dikenal   oleh   java,   maka   event   tersebut   haruslah   didaftarkan   terlebih   dahulu.  Pendaftaran dilakukan dengan menambahkan suatu event listener. Event listener pada java  ada   bermacam­macam,   tergantung   kepada   obyek   apa   yang   dikenai   event   tertentu.  Misalnya, untuk obyek berkelas JMenuitem, event listener yang dapat diterapkan adalah  ActionListener.   Cara   mendaftarkannya   adalah   menggunakan   metode   addActionListener  pada   obyek   berkelas   JMenuitem   tersebut   dengan   parameter­nya   sebuah   obyek   berkelas  ActionListener.   Obyek   berkelas   ActionListener   yang   kita   gunakan   kali   ini   adalah   tidak  bernama, sehingga kita hanya menuliskannya sebagai new ActionListener(). (Dalam kasus  lain kita akan menggunakan obyek ActionListener yang diberi nama). Dalam   kelas   ActionListener   sendiri   terdapat   sebuah   metode   abstrak   bernama  actionPerformed   yang   bertipe   void   (tidak   memiliki   nilai   kembalian).   Anda   harus  mendefinisikan sendiri rutin aksi yang akan dilakukannya pada obyek berkelas ActionEvent. Kemudian kita harus mengatur agar obyek bernama item berkelas JMenuItem ini nantinya  apabila diklik menggunakan mouse akan menampilkan keterangan dari program konverter  suhu   kita.   Caranya   cukup   dengan   menambahkan   metode   addActionListener   pada   obyek  item   ini,   lalu   menciptakan   suatu   obyek   yang   mengimplementasikan   ActionListener   yang  mengatur respon yang diberikan jika item ini diklik. Source kodenya adalah : item.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae){ if(ae.getSource() == item) keterangan(); } }); Method  actionPerformed(ActionEvent ae)  merupakan   abstract   method   yang   akan  dijalankan dengan pemicunya berupa obyek dari ActionEvent yang akan membaca kejadian  atau   aksi   yang   dilakukan   oleh   pengguna.   Berdasarkan   ActionEvent   inilah   suatu  actionPerformed dikerjakan. Isi dari blok method ini adalah sebuah baris kode yang kita  Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu halaman 10/18
  • 11. Tri Sapto Adji BCC Manokwari definisikan sendiri, yakni  if(ae.getSource() == item) keterangan();  yang menyatakan  bahwa jika aksi yang diberikan adalah bersumber dari obyek bernama item (yang berkelas  JMenuItem   sebagaimana   telah   didefinisikan   sebelumnya),   maka   suatu   method   bernama  keterangan( ) akan dikerjakan.   Method keterangan( ) sendiri adalah suatu metode yang   didefinisikan   sendiri   oleh   kita,   yakni   untuk   menampilkan   suatu   kotak   berisi   pesan   atau  informasi   tentang   program   ini.   Method   keterangan(   )   ini   dapat   dilihat   pada   baris­baris  terakhir dari source kode program tersebut. private void keterangan() { JOptionPane.showMessageDialog( null, "<html><h1>JKonverter</h1><hr> <h2>Program untuk mengkonversi Suhu</h2>" + "<br>Dibuat oleh Tri Sapto Adji, S.Pd."+ "<br>@Manokwari, Papua Barat Indonesia<br>Oktober 2011"+ "<br><br>JKonverter by Tri Sapto Adji, S.Pd. is a Freeware."+ "<br>It was created in order to be usefull"+ "<br>but "Without Any Guarantee" for the mistake"+ "<br>or error that'll happen by using this program." + "<br>Use it at your own risk!", "Tentang JKonverter", 1, cekIcon("JKonverter1.png") ); } Sebelum kita lanjutkan dengan komponen­komponen lainnya, coba terlebih dahulu Anda  kompilasi program ini dengan perintah : javac KonverterSuhu.java Jika   tidak   ada   kesalahan   maka   kita   dapat   melanjutkan   dengan   pengaturan   komponen­ komponen lainnya. Jika ada kesalahan, coba cek apa keterangan yang muncul pada konsol  dan dimana (baris ke berapa) kesalahan(­kesalahan) tersebut terjadi. Perbaiki kemudian  kompilasi   ulang   dengan   perintah   tersebut   di   atas.   Kemudian   coba   jalankan   program  tersebut dengan perintah : java KonverterSuhu Jika berhasil akan muncul sebuah antar muka yang berukuran sangat kecil sebagaimana  gambar berikut.  Gunakan (drag) mouse untuk memperbesar ukuran frame program tersebut. Program Anda tersebut Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu halaman 11/18
  • 12. Tri Sapto Adji BCC Manokwari berukuran sangat kecil karena Anda menyertakan kode ks.pack() dalam method main. Baris kode ini digunakan untuk mengatur ukuran frame agar menyesuaikan dengan ukuran komponen dalam frame tersebut. Nah, karena program Anda tersebut hanya menyertakan sebuah komponen yakni menu yang berkelas JMenu dan belum menyertakan komponen-komponen lainnya di dalamnya maka ukurannya menjadi seperti yang Anda lihat (selebar dan setinggi komponen menu). Anda jangan khawatir karena nantinya setelah kita menambahkan komponen-komponen seperti JButton, JLabel dan lainnya, maka ukuran jendela frame dengan sendirinya akan menyesuaikan dengan komponen-komponen tersebut. Jika Anda menginginkan panjang dan lebar tertentu, Anda dapat mengganti baris kode ks.pack(); tersebut dengan kode ks.setSize(x,y); dimana x adalah ukuran lebar frame dalam satuan pixel dan y adalah ukuran tinggi frame dalam satuan pixel. Jika Anda mengklik Menu Menu > Tentang Jkonverter, maka akan tampil sebuah kotak  dialog sebagai berikut : Klik tombol OK untuk menutup kotak dialog tersebut, kemudian klik tombol exit di sudut  atas program JKonverter untuk menutup program tersebut. Kita lanjutkan dengan menempatkan komponen­komponen lainnya. Komponen­komponen  Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu halaman 12/18
  • 13. Tri Sapto Adji BCC Manokwari tersebut kita atur dalam tiga posisi penempatan, yakni posisi di atas, tengah dan bawah.  Untuk itu Anda harus membuat tiga buah obyek kontainer berkelas JPanel, dan mengatur  layoutnya dengan kelas BorderLayout. Kelas BorderLayout adalah sebuah kelas pada java  untuk mengatur tata letak komponen dalam suatu kontainer pada posisi atas (NORTH),  kanan   (EAST),   bawah   (SOUTH),   kiri   (WEST)   dan   tengah   (CENTER).   Jadi   disini   Anda  meletakkan tiga buah obyek kontainer lainnya (berkelas JPanel) yang lebih kecil di dalam  kontainer induk (berkelas JFrame) yang merupakan jendela program Anda. Masing­masing  obyek kontainer berkelas JPanel tersebut nantinya akan diisi dengan komponen­komponen  yang   telah   dideklarasikan   sebelumnya,   yakni   obyek­obyek   berkelas   JComboBox,  JFormattedTextField dan JLabel. Berikut   adalah  source   code  untuk   mendeklarasikan   dan   mendefinisikan   komponen   judul  berkelas JLabel dan kontainer berkelas JPanel, kemudian menempatkan komponen judul  tersebut pada kontainer berkelas JLabel tersebut. JLabel judul = new JLabel("<html><h1><center>KONVERTER SUHU</center></h1></html>"); JPanel panel0 = new JPanel(); panel0.add(judul); Perhatikan   pada   pernyataan­pernyataan   yang   terdapat   dalam   method   keterangan   dan  dalam pendefinisian obyek judul berikut ini : JLabel judul = new JLabel("<html><h1><center>KONVERTER SUHU</center></h1></html>"); Terdapat penggunaan skrip html. Hal ini karena memang java dapat menggunakan skrip  tersebut   untuk   mengatur   tampilan   dari   suatu   teks   (string).   Anda   boleh   saja   tidak  menggunakan kode­kode html jika hanya ingin menampilkan teks yang biasa­biasa saja.  Selanjutnya adalah penciptaan obyek berkelas JPanel bernama panel0, dan menempatkan  komponen   judul   tersebut   ke   dalamnya.   Sedangkan   obyek­obyek   lainnya   kecuali   obyek  hitung   yang   berkelas   JButton   ditempatkan   pada   obyek   panel1   dengan   layout­nya  BorderLayout dengan 4 baris 3 kolom, jarak antara baris 10px dan jarak antara kolom 5px.  Penempatannya mulai dari kiri ke kanan hingga sebanyak 3 kolom terisi kemudian turun ke  baris berikutnya.  Komponen terakhir adalah obyek berkelas JButton yang bernama hitung yang ditempatkan  pada   obyek   JPanel   yakni   panel2   dengan   alignment   tengah   (center).   Sampai   disini  pengaturan tata letak seluruh komponen telah selesai.  Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu halaman 13/18
  • 14. Tri Sapto Adji BCC Manokwari Perhatikan gambar berikut. Jika Anda melihat kembali kepada  source code  program KonverterSuhu kita, terdapat tiga  (3)   event   listener   lainnya   yang   didaftarkan   pada   obyek   daftar1,   daftar2   yang   berkelas  JComboBox dan obyek button yang berkelas JButton. Sama seperti obyek item, kita juga  menggunakan   metode   addActionListener   untuk   mengatur   respon­respon   yang   disiapkan  untuk ketiga obyek tersebut.  Kita  lihat bahwa obyek event yang  dikenakan pada obyek daftar1  sebenarnya ditujukan  untuk   mengatur   tulisan   apa   yang   akan   ditampilkan   pada   obyek   satuan1   yang   berkelas  JLabel.   Obyek   satuan1   tersebut   kita   gunakan   untuk   menampilkan   satuan   suhu   sesuai  dengan pilihan item yang terdapat pada obyek daftar1 yang berkelas JComboBox tersebut.  daftar1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae){ JComboBox combo = (JComboBox)ae.getSource(); String s = (String)combo.getSelectedItem(); String t = (s.equals("Kelvin"))?s:"<html><sup>o</sup>"+s+"</html>"; satuan1.setText(t); teks2.setValue(null); } }); Dari   baris   kode   tersebut,   kita   lihat   bahwa   jika   item   terpilih   dari   obyek   combo   berkelas  JComboBox   adalah   Kelvin,   maka   yang   akan   ditampilkan   adalah   sama   dengan   pilihan  tersebut (yakni Kelvin). Selain itu maka yang akan ditampilkan adalah teks   o<nama item  terpilih>, sehingga jika yang terpilih adalah item Celcius maka yang ditampilkan adalah  teks  oCelcius, jika item Fahrenheit yang terpilih maka yang akan ditampilkan adalah teks  o Fahrenheit dan jika item Reamur yang terpilih maka yang akan ditampilkan adalah teks  o Reamur.   Jadi   hanya   jika   item   terpilih   adalah   Kelvin   maka   teks   yang   akan   ditampilkan  Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu halaman 14/18
  • 15. Tri Sapto Adji BCC Manokwari adalah sama dengan item pilihan tersebut (yakni Kelvin tanpa  o). Hal   yang   sama   juga   diterapkan   pada   obyek   daftar2,   obyek   event­nya   digunakan   untuk  mengatur tampilan dari obyek satuan2 yang berkelas JLabel. daftar2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae){ JComboBox combo = (JComboBox)ae.getSource(); String s = (String)combo.getSelectedItem(); String t = (s.equals("Kelvin"))?s:"<html><sup>o</sup>"+s+"</html>"; satuan2.setText(t); teks2.setValue(null); } }); Terakhir adalah event listener yang diberikan kepada obyek bernama button yang berkelas  JButton. Obyek ini kita gunakan untuk melakukan perhitungan konversi suhu berdasarkan  nilai   yang   diisi   pada   kotak   isian   teks1   yang   berkelas   JFormattedTextField,   dan   pilihan  besaran suhu yang dipilih pada kotak pilihan (combo box) daftar1 dan daftar2 yang sudah  dibahas sebelumnya. Nilai index dari item yang dipilih pada kedua kotak pilihan tersebut  ditampung dalam variabel larik hasil bertipe integer. Karena ada dua kotak pilihan (yakni  daftar1 dan daftar2) maka variabel hasil ini juga memiliki panjang 2. Hal ini dapat kita lihat  pada pernyataan definisi :  hasil = new int[2]; Selanjutnya kita atur agar supaya komponen pertama dari variabel hasil (yakni hasil[0])  tersebut   diisi   dengan   nilai   index   terpilih   dari   obyek   daftar1   (berkelas   JcomboBox),  sedangkan komponen keduanya (yakni hasil[1]) diisi dengan nilai index terpilih dari obyek  daftar2.   Variabel   obyek   daftar1   sendiri   berisi   empat   (4)   buah   item,   yakni   Celscius,  Fahrenheit, Kelvin dan Reamur. Penomoran index dari keempat item tersebut dimulai dari  0,   sehingga   nilai   index   yang   dimiliki   oleh   item­item   tersebut   adalah   :   Celcius   =   0,  Fahrenheit =1, Kelvin = 2 dan Reamur = 3. Hal yang persis sama juga terjadi pada variable  obyek daftar2. Hal ini dapat diwujudkan melalui pernyataan : hasil[0] = daftar1.getSelectedIndex(); hasil[1] = daftar2.getSelectedIndex(); Sehingga apabila user memilih item Celcius pada obyek daftar1 tersebut kemudian memilih  item Kelvin pada obyek daftar2 maka nilai dari variabel hasil[0] akan diisi dengan nilai 0  dan variable hasil[1] diisi dengan nilai 2. Kemudian saat tombol button diklik program java  Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu halaman 15/18
  • 16. Tri Sapto Adji BCC Manokwari akan memeriksa action apa yang cocok untuk dikerjakan. Untuk itu tombol button (obyek  button yang berkelas JButton) sendiri kita daftarkan sebagai sebuah obyek ActionListener.  hitung = new JButton("Konversi"); hitung.addActionListener(new ActionListener() { public void actionPerformed (ActionEvent ae) { hasil = new int[2]; hasil[0] = daftar1.getSelectedIndex(); hasil[1] = daftar2.getSelectedIndex(); if(teks1.getValue()==null) return; if(hasil[0]==hasil[1]) teks2.setValue(teks1.getValue()); if(hasil[0]!=hasil[1]) { if(hasil[0]==0 && hasil[1]==1) teks2.setValue(celciusToFahrenheit()); if(hasil[0]==0 && hasil[1]==2) teks2.setValue(celciusToKelvin()); if(hasil[0]==0 && hasil[1]==3) teks2.setValue(celciusToReamur()); if(hasil[0]==1 && hasil[1]==0) teks2.setValue(fahrenheitToCelcius()); if(hasil[0]==1 && hasil[1]==2) teks2.setValue(fahrenheitToKelvin()); if(hasil[0]==1 && hasil[1]==3) teks2.setValue(fahrenheitToReamur()); if(hasil[0]==2 && hasil[1]==0) teks2.setValue(kelvinToCelcius()); if(hasil[0]==2 && hasil[1]==1) teks2.setValue(kelvinToFahrenheit()); if(hasil[0]==2 && hasil[1]==3) teks2.setValue(kelvinToReamur()); if(hasil[0]==3 && hasil[1]==0) teks2.setValue(reamurToCelcius()); if(hasil[0]==3 && hasil[1]==1) teks2.setValue(reamurToFahrenheit()); if(hasil[0]==3 && hasil[1]==2) teks2.setValue(reamurToKelvin()); } } } }); Ternyata pernyataan yang cocok adalah pernyataan : if(hasil[0]==0 && hasil[1]==2) teks2.setValue(celciusToKelvin()); Pernyataan   tersebut   menyatakan   bahwa   jika   variabel   hasil[0]   bernilai   0   (item   Celcius  dipilih)   dan   variabel   hasil[1]   bernilai   2   (item   Kelvin   dipilih)   maka   obyek   teks2   (yang  berkelas   JformattedTextField)   akan   diisi   dengan   nilai   hasil   perhitungan   yang   dikerjakan  oleh fungsi celciusToKelvin( ). Fungsi celciusToKelvin sendiri didefinisikan sebagai sebuah  fungsi dengan nilai kembalian bertipe Float yang melakukan perhitungan : K = C + 273.  Dalam program java rumus tersebut dikerjakan oleh blok pernyataan berikut : private float celciusToKelvin() { float celcius = Float.valueOf(teks1.getValue().toString()).floatValue(); float Kelvin = celcius + 273; return Kelvin; } Perhatikan   bahwa   yang   dihitung   adalah   nilai   yang   diambil   dari   variabel   teks1   yang  dikonversi menjadi bilangan bertipe float melalui baris pernyataan : float celcius = Float.valueOf(teks1.getValue().toString()).floatValue(); Kemudian dilakukan perhitungan :  Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu halaman 16/18
  • 17. Tri Sapto Adji BCC Manokwari float Kelvin = celcius + 273; Hasilnya   dijadikan   sebagai   nilai   kembalian   dari   fungsi   celciusToKelvin   tersebut   melalui  pernyataan :  return Kelvin; Bagaimana jika kotak isian teks1 belum diisi nilai apapun atau masih kosong? Pernyataan  berikut­lah yang akan dikerjakan : if(teks1.getValue()==null) return; Pernyataan   tersebut   berarti,   jika   variabel   teks1   masih   kosong   maka   tidak   ada   aktivitas  apapun yang dilakukan. Sedangkan bila kedua daftar pilihan suhu mempunyai nilai yang  sama   (misalnya   Celcius   dan   Celcius,   atau   Fahrenheit   dan   Fahrenheit)   maka   baris  pernyataan berikut akan dikerjakan : if(hasil[0]==hasil[1]) teks2.setValue(teks1.getValue()); Kita lihat dari pernyataan tersebut bahwa jika item yang terpilih pada kedua list pilihan  adalah sama, maka nilai pada teks2 akan di­set sama dengan nilai pada teks1.  Pilihan­pilihan   lainnya   (12   pilihan   sesuai   formula   pada   tabel   di   halaman   pertama)  diterjemahkan menjadi 12 fungsi (method yang memiliki nilai kembalian) yang berbeda,  dan akan dijalankan pada saat obyek button diklik sesuai dengan kondisi dari item­item  terpilih (nilai indeks dari variabel hasil[0] dan hasil[1]). if(hasil[0]==0 && hasil[1]==1) teks2.setValue(celciusToFahrenheit()); if(hasil[0]==0 && hasil[1]==2) teks2.setValue(celciusToKelvin()); if(hasil[0]==0 && hasil[1]==3) teks2.setValue(celciusToReamur()); if(hasil[0]==1 && hasil[1]==0) teks2.setValue(fahrenheitToCelcius()); if(hasil[0]==1 && hasil[1]==2) teks2.setValue(fahrenheitToKelvin()); if(hasil[0]==1 && hasil[1]==3) teks2.setValue(fahrenheitToReamur()); if(hasil[0]==2 && hasil[1]==0) teks2.setValue(kelvinToCelcius()); if(hasil[0]==2 && hasil[1]==1) teks2.setValue(kelvinToFahrenheit()); if(hasil[0]==2 && hasil[1]==3) teks2.setValue(kelvinToReamur()); if(hasil[0]==3 && hasil[1]==0) teks2.setValue(reamurToCelcius()); if(hasil[0]==3 && hasil[1]==1) teks2.setValue(reamurToFahrenheit()); if(hasil[0]==3 && hasil[1]==2) teks2.setValue(reamurToKelvin()); Pada bagian akhir dari program kita, sebelum method keterangan terdapat sebuah method  yang berisi pernyataan­pernyataan sebagai berikut : private ImageIcon cekIcon(String path) { URL imgURL = KonverterSuhu.class.getResource(path); if(imgURL != null) { return new ImageIcon(imgURL); }else { System.err.println("Maaf, icon pada " + path + " tidak ada"); return null; Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu halaman 17/18
  • 18. Tri Sapto Adji BCC Manokwari } } Metode   cekIcon   tersebut   kita   buat   untuk   memudahkan   kita   dalam   memilih   dan  menampilkan icon atau gambar yang ingin kita tampilkan pada program tersebut. Sehingga  saat kita  perlu memilih  dan ingin menampilkan sebuah  gambar, kita  tinggal memanggil  metode tersebut dengan argumen­nya adalah URL (lokasi dan nama) dari gambar tersebut. Selamat mencoba … ! Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu halaman 18/18