Tri Sapto Adji                                                                         BCC Manokwari                      ...
Tri Sapto Adji                                                                           BCC Manokwarimampu menghitung bil...
Tri Sapto Adji                                                                          BCC Manokwariimport   java.awt.*;i...
Tri Sapto Adji                                                                               BCC Manokwari                ...
Tri Sapto Adji                                                                   BCC Manokwari                            ...
Tri Sapto Adji                                                                          BCC Manokwari       }             ...
Tri Sapto Adji                                                                           BCC ManokwariDeklarasi ini harus ...
Tri Sapto Adji                                                                              BCC Manokwaritersebut   telah ...
Tri Sapto Adji                                                                         BCC ManokwariYang harus menjadi per...
Tri Sapto Adji                                                                           BCC Manokwari(icon) yang akan tam...
Tri Sapto Adji                                                                              BCC Manokwaridefinisikan sendi...
Tri Sapto Adji                                                                      BCC Manokwariberukuran sangat kecil ka...
Tri Sapto Adji                                                                         BCC Manokwaritersebut kita atur dal...
Tri Sapto Adji                                                                                  BCC ManokwariPerhatikan ga...
Tri Sapto Adji                                                                               BCC Manokwariadalah sama deng...
Tri Sapto Adji                                                                                BCC Manokwariakan memeriksa ...
Tri Sapto Adji                                                                              BCC Manokwari                 ...
Tri Sapto Adji                                                                 BCC Manokwari                 }       }Meto...
Upcoming SlideShare
Loading in …5
×

My javanote02

801 views
716 views

Published on

Source code dan penjelasan membuat program konverter suhu JKonverter dengan java 1.6

Published in: Education
3 Comments
2 Likes
Statistics
Notes
No Downloads
Views
Total views
801
On SlideShare
0
From Embeds
0
Number of Embeds
319
Actions
Shares
0
Downloads
22
Comments
3
Likes
2
Embeds 0
No embeds

No notes for slide

My javanote02

  1. 1. Tri Sapto Adji BCC Manokwari Membuat Aplikasi Konverter SuhuPada   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 RumusCelcius (C) Fahrenheit (F) 9 F =  C + 32 5 Kelvin (K) K = C + 273 Reamur (R) 4 R =  C 5Fahrenheit (F) Celcius (C) 5 C =  (F­32) 9 Kelvin (K) 5 K =  (F­32)+273 9 Reamur (R) 4 R =  (F­32) 9Kelvin (K) Celcius (C) C = K­273 Fahrenheit (F) 9 F =  (K­273)+32 5 Reamur (R) 4 R =  (K­273) 5Reamur (R) Celcius (C) 5 C =  R 4 Fahrenheit (F) 9 F =  R + 32 4 Kelvin (K) 5 K =  R + 273 4Dengan 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. 2. Tri Sapto Adji BCC Manokwarimampu 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, Indonesiaimport javax.swing.*;Workshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu halaman 2/18
  3. 3. Tri Sapto Adji BCC Manokwariimport 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. 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. 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. 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 thatll 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. 7. Tri Sapto Adji BCC ManokwariDeklarasi 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. 8. Tri Sapto Adji BCC Manokwaritersebut   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. 9. Tri Sapto Adji BCC ManokwariYang 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 batangMenuJMenuBar batangMenu = new JMenuBar();//menempatkan obyek batangMenu pada framesetJMenuBar(batangMenu);//deklarasi & definisi obyek JMenu bernama menuJMenu menu = new Jmenu("Menu");//menempatkan obyek menu pada obyek batangMenubatangMenu.add(menu);//mendefinisikan obyek item yang telah dideklarasikan sebelumnyaitem = new JMenuItem("Tentang JKonverter", cekIcon("JKonverter.png"));//menempatkan obyek item pada obyek menumenu.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. 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. 11. Tri Sapto Adji BCC Manokwaridefinisikan 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 thatll 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.javaJika   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 KonverterSuhuJika berhasil akan muncul sebuah antar muka yang berukuran sangat kecil sebagaimana gambar berikut. Gunakan (drag) mouse untuk memperbesar ukuran frame program tersebut. Program Anda tersebutWorkshop Java Bag. 2 –  Membuat Aplikasi Konverter Suhu halaman 11/18
  12. 12. Tri Sapto Adji BCC Manokwariberukuran sangat kecil karena Anda menyertakan kode ks.pack() dalam method main. Bariskode ini digunakan untuk mengatur ukuran frame agar menyesuaikan dengan ukuran komponendalam frame tersebut. Nah, karena program Anda tersebut hanya menyertakan sebuah komponenyakni menu yang berkelas JMenu dan belum menyertakan komponen-komponen lainnya didalamnya maka ukurannya menjadi seperti yang Anda lihat (selebar dan setinggi komponen menu).Anda jangan khawatir karena nantinya setelah kita menambahkan komponen-komponen sepertiJButton, JLabel dan lainnya, maka ukuran jendela frame dengan sendirinya akan menyesuaikandengan komponen-komponen tersebut. Jika Anda menginginkan panjang dan lebar tertentu, Andadapat mengganti baris kode ks.pack(); tersebut dengan kode ks.setSize(x,y); dimana x adalahukuran 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. 13. Tri Sapto Adji BCC Manokwaritersebut 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. 14. Tri Sapto Adji BCC ManokwariPerhatikan 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. 15. Tri Sapto Adji BCC Manokwariadalah 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. 16. Tri Sapto Adji BCC Manokwariakan 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. 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. 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

×