Program ini membuat aplikasi konverter suhu yang mampu mengkonversi empat jenis satuan suhu (Celcius, Fahrenheit, Kelvin, dan Reamur) berdasarkan 12 rumus yang ditentukan. Aplikasi ini menggunakan antarmuka grafis yang memiliki komponen seperti combobox, textfield, label dan tombol untuk memasukkan input, memilih satuan awal dan tujuan, menampilkan hasil konversi, serta memberikan informasi tentang program.
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 = (F32)
9
Kelvin (K) 5
K = (F32)+273
9
Reamur (R) 4
R = (F32)
9
Kelvin (K) Celcius (C) C = K273
Fahrenheit (F) 9
F = (K273)+32
5
Reamur (R) 4
R = (K273)
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 masingmasing berisi satu perhitungan dari rumusrumus
tersebut di atas. Fungsifungsi atau metodemetode 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 fungsifungsi tersebut, yang wajib kita lakukan adalah
membuat desain antar muka yang mampu melakukan halhal 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.
Komponenkomponen 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 diinput 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
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. Barisbaris 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 kelaskelas
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 komponenkomponen 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 propertynya berupa ukuran framenya (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 tengahtengah layar. Jika Anda menghapus
pernyataan tersebut, program KonverterSuhu kita masih dapat dijalankan, tetapi posisinya
tidak berada di tengahtengah 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 menginisialisasi instans dari suatu
kelas. Artinya apabila kelas tersebut dipanggil melalui pembentukan obyeknya, 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. Pertamatama 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 codenya 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 bermacammacam, 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 parameternya 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 barisbaris
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 komponenkomponen 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 komponenkomponen lainnya. Komponenkomponen
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. Masingmasing
obyek kontainer berkelas JPanel tersebut nantinya akan diisi dengan komponenkomponen
yang telah dideklarasikan sebelumnya, yakni obyekobyek 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 pernyataanpernyataan 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 kodekode html jika hanya ingin menampilkan teks yang biasabiasa saja.
Selanjutnya adalah penciptaan obyek berkelas JPanel bernama panel0, dan menempatkan
komponen judul tersebut ke dalamnya. Sedangkan obyekobyek lainnya kecuali obyek
hitung yang berkelas JButton ditempatkan pada obyek panel1 dengan layoutnya
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 responrespon 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 eventnya 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 itemitem 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
berikutlah 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 diset sama dengan nilai pada teks1.
Pilihanpilihan 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 itemitem
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 pernyataanpernyataan 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 argumennya adalah URL (lokasi dan nama) dari gambar tersebut.
Selamat mencoba … !
Workshop Java Bag. 2 – Membuat Aplikasi Konverter Suhu halaman 18/18