My javanote02

18

Click here to load reader

description

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

Transcript of My javanote02

Page 1: My javanote02

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) F = 95

C + 32

Kelvin (K) K = C + 273

Reamur (R) R = 45

C

Fahrenheit (F) Celcius (C) C = 59

(F­32)

Kelvin (K) K = 59

(F­32)+273

Reamur (R) R = 49

(F­32)

Kelvin (K) Celcius (C) C = K­273

Fahrenheit (F) F = 95

(K­273)+32

Reamur (R) R = 45

(K­273)

Reamur (R) Celcius (C) C = 54

R

Fahrenheit (F) F = 94

R + 32

Kelvin (K) K = 54

R + 273

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

Page 2: My javanote02

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

Page 3: My javanote02

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 kerjaks.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

Page 4: My javanote02

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

Page 5: My javanote02

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

Page 6: My javanote02

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

Page 7: My javanote02

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

Page 8: My javanote02

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 barsuper("JKonverter"); //Mengatur agar jendela/frame dapat ditutup bila tombol exit dikliksetDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

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

Page 9: My javanote02

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 batangMenuJMenuBar batangMenu = new JMenuBar(); //menempatkan obyek batangMenu pada frame

setJMenuBar(batangMenu); //deklarasi & definisi obyek JMenu bernama menuJMenu menu = new Jmenu("Menu"); //menempatkan obyek menu pada obyek batangMenu

batangMenu.add(menu); //mendefinisikan obyek item yang telah dideklarasikan sebelumnyaitem = 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

Page 10: My javanote02

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

Page 11: My javanote02

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

Page 12: My javanote02

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

Page 13: My javanote02

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

Page 14: My javanote02

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 oFahrenheit dan jika item Reamur yang terpilih maka yang akan ditampilkan adalah teks oReamur.  Jadi  hanya  jika   item terpilih  adalah  Kelvin  maka  teks  yang akan ditampilkan 

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

Page 15: My javanote02

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

Page 16: My javanote02

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

Page 17: My javanote02

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

Page 18: My javanote02

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