A. TUJUAN PEMBELAJARAN

dokumen-dokumen yang mirip
A. TUJUAN PEMBELAJARAN

A. TUJUAN PEMBELAJARAN

MODUL PRAKTIKUM KE 3 A.

IF PEMROGRAMAN LANJUT EVENT. Oleh : Andri Heryandi, M.T.

GUI & Event Handling. Viska Mutiawani, M.Sc

Membuat Menu Login Sederhana [Full Coding]

BAB IX. USER INTERFACE

Materi : GUI AWT & SWING.

Membuat User Interface dengan Swing. Program yang dibuat sebelumnya selalu berbasis console User lebih senang berinteraksi dengan

GUI & Event Handling. Viska Mutiawani, M.Sc. 1 Viska Mutiawani - Informatika FMIPA Unsyiah

MODUL PRAKTIKUM BERORIENTASI OBJEK NINF615 SEMESTER GASAL 2016/2017 PROGRAM STUDI S1 TEKNIK INFORMATIKA

Dasar Perancangan Graphical User Interface

Graphical User Interface (GUI)

PEMROGRAMAN II. Materi : nursari2010.blogdetik.com String String Handling Java.util,Java.io. By : Sri Rezeki Candra Nursari

INSTRUKSI PENCABANGAN

Modul 08. User Interface 01

Pemrograman Java III

BAB II VARIABEL DAN TIPE DATA

GUI (Grapichal User Interface)

2 TIPE DATA DAN VARIABEL

Materi 5 Pemrograman Visual

MODUL 7 - EXCEPTION HANDLING

PEMROGRAMAN II. By : Sri Rezeki Candra Nursari

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN JAVA 2

DASAR PEMOGRAMAN JAVA

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

IF PEMROGRAMAN LANJUT GRAPHICAL USER INTERFACE (GUI) 11 DENGAN SWING. Oleh : Andri Heryandi, M.T.

Program Kalkulator Sederhana Menggunakan Java Netbeans

DIK-020 Pemograman Berorientasi Objek 5/24/2012

BAB IX MEMBUAT FORM 9.1 Membuat Form Secara Konvensional

Materi 3 Pemrograman Visual

Elemen Dasar Dalam Bahasa Java

Percobaan 7 GUI(Graphical User Interface )

APLIKASI PERHITUNGAN NILAI MAHASISWA. Untuk membuat aplikasi nilai mahasiswa, langkah-langkahnya adalah sebagai berikut :

PERTEMUAN VI AWT DAN SWING TUJUAN PRAKTIKUM. 1. Praktikan mengenal pembuatan GUI pada Java. 2. Praktikan memahami action pada objek dalam Java.

Slide 6: Writing Classes

Membangun GUI (dengan AWT & Swing) OOP Java

Pemrograman. Pertemuan-3 Fery Updi,M.Kom

PERTEMUAN 6 AWT & SWING

Badiyanto, S.Kom., M.Kom. PBO java

GRAPHICAL USER INTERFACE (GUI)

Sendy Ferdian Sujadi

GUI Event Handling. minggu 13. Wednesday, 16 May 12

Pemrograman Java III

Struktur Kontrol Pemrograman Java : PERCABANGAN

Modul Praktikum 9 BAB IX LAYOUTING. Departemen Teknologi Informasi Telkom Applied Science School H a l

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN 2

TIPE DATA Pertemuan (K-03/L-03)

Anonymous Inner Class

Dasar Pemrograman Java

TUGAS PEMROGRAMAN BERBASIS JAVA ADARA HIJAB

Pemrograman Berorientasi Obyek. Ramos Somya

LAPORAN TUGAS AKHIR APLIKASI KALKULATOR BERBASIS JAVA

BAB 1 KONSEP DASAR JAVA

Refreshing Praktikum: GUI (Graphical User Interface)

Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO. Ramos Somya

Pemrograman Berbasis Java PERSEWAAN PELAMPUNG. Riska Nony Oktaviani Kelas 21 Teknik Informatika Teknologi Informasi

AWT (ABSTRACT WINDOWS TOOLKITS)

- Setiap pola yang menggambarkan permasalahan yang terjadi secara berulang, serta

PEMROGRAMAN JAVA. Yoannita, S.Kom. Input Kondisi (IF-ELSE, SWITCH)

LAPORAN PERCOBAAN V ( MENGHITUNG NILAI UJIAN MAHASISWA) BERBASIS JAVA DENGAN MENGGUNAKAN TOOLS NETBEANS

Materi 6 Pemrograman Visual

Tugas Java. : Evannata Dwiyan. Nim : : Sistem Informasi. Kelas : 21. : Informasi Restoran

Creating Graphical User Interfaces [1] with Java By: De Rosal Ignatius Moses Setiadi

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

Pemrograman Lanjut. Intro to GUI (Graphical User Interface)

Bab Tujuan. 8.2 Delegation Event Model

P 5 Bab 4 : GUI (Graphical User Interface) 4.1 Tujuan. 4.2 Materi. 4.3 Review OOP. : Suzuki, Ferari, Toyota, Honda, Jaguar

MEMBUAT APLIKASI ZODIAK SEDERHANA DENGAN JAVA BY : INDRA

Pengenalan Visual Basic

BAGIAN XIII GRAPHICAL USER INTERFACE DENGAN SWING. Praktikum I : Menggunakan JFrame, JTextField, JLabel dan JButton

Romi Satria Wahono Lahir di Madiun, 2 Oktober 1974 SD Sompok Semarang (1987) SMPN 8 Semarang (1990) SMA Taruna Nusantara, Magelang (1993) S1, S2 dan S

Gambar Implementasi Halaman Pembuka 34

PEMROGRAMAN BERORIENTASI OBJEK

Modul Praktikum 7 Pemograman Berorientasi Objek

JAVA SWING. Swing merupakan library pada java untuk membuat sebuah tampilan seperti

PERTEMUAN 1 Membuat Project & Komponen Swing [PBO II JAVA] dosen : SOPINGI, S.Kom

MODUL PRAKTIKUM TI014 STRUKTUR DATA Season 1

PRAKTIKUM 2. Variabel, Tipe Data dan Operator. Tipe data dan variabel. - Microsoft Visual Studio 2010

PEMROGRAMAN BERORIENTASI OBJEK

BAHASA PEMROGRAMAN JAVA

Topik. 1. Statement if 2. Statement if..else.. 3. Statement if..else.. If (bertingkat ) 4. Penggunaan Input Keyboard

KEAHLIAN PEMROGAMAN JAVA

LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom

KENDALI PROSES. Untuk mengatur arus program, pemrograman java menyediakan struktur perulangan (looping), kondisional, percabangan, dan lompatan.

Abstract Window Toolkit

Java Basic. Variabel dan Tipe Data. Lokasi di dalam memori komputer yang digunakan untuk menyimpan suatu informasi (nilai)

GUI Event Handling. 5. Mendiskusikan keuntungan-keuntungan dari menggunakan inner dan anonymous class

IKG2I4 / Software Project I

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN 2

TIPE DATA PADA JAVA. Pertemuan (K-04/L-04)

Percabangan dan Perulangan

if (ekspresi_boolean) {

LAPORAN RESMI. PRAKTIKUM TEKNOLOGI WEB Pengenalan JavaScript

Percabangan & Perulangan

Pemrograman Java III

Praktikum III : Menggunakan JRadioButton

Minggu III STRUKTUR PEMILIHAN (KONTROL PROGRAM)

if (ekspresi_boolean) { Pernyataan1; } else { Pernyataan2; }

Transkripsi:

PRAKTIKUM 29 GUI: KALKULATOR MINI A. TUJUAN PEMBELAJARAN 1. Memahami konsep Graphical User Interface (GUI). 2. Mampu membuat program yang menerapkan konsep GUI. 3. Mampu membuat program berbasis GUI yang melibatkan penggunaan komponen GUI. 4. Mampu membuat program berbasis GUI yang bisa menerima respon user, baik melalui mouse maupun keyboard. B. DASAR TEORI Project ini kami beri nama Kalkulator Mini, sebuah project sederhana yang mengimplementasikan teori GUI di Java. Dari namanya sudah bisa ditebak kegiatan utama dari project ini adalah membuat sebuah program aplikasi yang mensimulasikan sebuah kalkulator dengan kemampuan yang sangat minim. Kalkulator ini didesain untuk bisa menangani beberapa operasi matematika biasa, meliputi penjumlahan, pengurangan, perkalian, pembagian dan perpangkatan. Karena buku ini tidak didesain sebagai buku acuan tentang materi Struktur Data, maka teknik yang digunakan untuk menangani proses matematika tersebut tidak terlalu rumit. Program akan menerima tiga inputan : Data pertama berupa data numerik yang bertindak sebagai data pertama yang akan diproses. Data kedua berupa data karakter yang menyatakan jenis proses yang akan dilakukan. Data ketiga berupa data numerik menyatakan data kedua yang akan diproses. Seluruh data inputan tersebut diberikan melalui pengaktifan sejumlah objek button yang tersedia di layar. Kita tidak melakuan pengetikan, misalnya angka, untuk memasukkan data numerik, 279

sehingga objek textfield yang digunakan kita pasifkan. Method setenabled(boolean) digunakan secara luas untuk tujuan mempasifkan suatu objek agar tidak bisa diakses. Desain Tampilan Kalkulator ini hanya memiliki 5 (lima) button untuk lima proses matematika, yaitu "+", "-", "*", "/" dan "^". Sebagai tambahan, sebuah objek berjenis JCheckBox disediakan untuk mengatur penggunaan karakter pemisah ribuan Pemisah ribuan Area tampilan Hapus Batal Ulang ^ 7 8 9 * 4 5 6 / 1 2 3-0. = + Area informasi Exit Berikut ini keterangan setiap item pada desain tampilan tersebut: "Area tampilan" merupakan objek berjenis JTextField, tempat dimana angka-angka yang diclick akan ditampilkan. Area ini juga digunakan sebagai tempat untuk menampilkan hasil proses. "Pemisah ribuan" merupakan objek berjenis JCheckBox yang digunakan sebagai flag atau tanda apakah kita akan menggunakan pemisah ribuan atau tidak. Untuk deretan angka yang cukup banyak, penggunaan pemisah ribuan akan sangat membantu kita membaca data yang tersaji. "Hapus" merupakan sebuah objek berjenis JButton yang digunakan untuk menghapus data yang sedang terlihat di layar satu karakter demi satu karakter dari belakang. "Batal" merupakan sebuah objek berjenis JButton yang digunakan untuk membatalkan data yang kali dimasukkan terakhir. Jika button ini di-click pada saat kita memasukkan data kedua, maka data kedua akan dibatalkan sedangkan data pertama tetap dianggap valid. "Ulang" merupakan sebuah objek berjenis JButton yang digunakan untuk membatalkan seluruh data yang telah dimasukkan. Dalam bagan automata di atas respon dari button ini sama dengan tindakan "cancel". "Exit" merupakan sebuah objek berjenis JButton yang digunakan untuk mengakhiri jalannya program. Window akan ditutup dan kendali dikembalikan ke sistem operasi. 280

".", "0" sampai "9" merupakan objek berjenis JButton yang digunakan untuk memasukkan data numerik dan tanda pemisah desimal pada bilangan pecahan. "^", "*", "/", "+" dan "-" merupakan objek berjenis JButton yang digunakan untuk menentukan jenis operator yang akan digunakan pada proses matematika. "=" merupakan objek berjenis JButton yang digunakan untuk memerintahkan komputer melakukan proses sesuai dengan data-data yang diberikan, lalu menampilkan hasilnya di "Area tampilan". "Area informasi" merupakan objek berjenis JLabel yang kita gunakan untuk menampilkan informasi biasa, misalnya nama kita. C. TUGAS PENDAHULUAN 1. Pelajari kelas kelas di Java yang berhubungan dengan User Interfaces. Kemudan buatlah daftar kelasnya dan fungsi kelas tersebut. D. PERCOBAAN Percobaan 1: Implementasi Kalkulator Mini 1 import javax.swing.*; 2 import java.awt.*; 3 import java.awt.event.*; 4 5 class MiniCalculator extends JFrame implements ActionListener 6 { 7 private JPanel panelatas = new JPanel(); 8 private JPanel paneltengah = new JPanel(); 9 private JPanel panelbawah = new JPanel(); 10 11 private JTextField tampilan = new JTextField (""); 12 private JCheckBox pemisahribuan = new JCheckBox ("Pemisah ribuan", true); 13 14 private Button[] tombolfungsi = 15 { new Button ("Hapus"), new Button ("Batal"), 16 new Button ("Ulang"), new Button ("^"), 17 new Button ("7"), new Button ("8"), 18 new Button ("9"), new Button ("*"), 281

19 new Button ("4"), new Button ("5"), 20 new Button ("6"), new Button ("/"), 21 new Button ("1"), new Button ("2"), 22 new Button ("3"), new Button ("-"), 23 new Button ("0"), new Button ("."), 24 new Button ("="), new Button ("+") }; 25 26 private JLabel informasi = new JLabel (" R.Purnama, 2003"); 27 private Button tombolexit = new Button ("Exit"); 28 29 private char operator = ' '; 30 private double datapertama = 0.0; 31 private double datakedua = 0.0; 32 private double datahasil = 0.0; 33 private boolean awalketikan = true; 34 private boolean entrypertama = true; 35 private boolean entrydesimal = false; 36 37 //--------------------- 38 // Constructor class 39 //--------------------- 40 public MiniCalculator() 41 { 42 super ("Kalkulator sederhana"); 43 44 setdefaultcloseoperation (JFrame.EXIT_ON_CLOSE); 45 setlocation (100,100); 46 setsize (300,200); 47 setresizable (false); 48 49 setpanelatas(); 50 setpaneltengah(); 51 setpanelbawah(); 52 resetnilai(); 53 54 getcontentpane().setlayout (new BorderLayout()); 55 getcontentpane().add (panelatas, BorderLayout.NORTH); 56 getcontentpane().add (paneltengah, BorderLayout.CENTER); 57 getcontentpane().add (panelbawah, BorderLayout.SOUTH); 58 59 show(); 60 } 61 282

62 //------------------------- 63 // Mereset seluruh nilai 64 //------------------------- 65 private void resetnilai() 66 { 67 operator = ' '; 68 69 datapertama = 0.0; 70 datakedua = 0.0; 71 datahasil = 0.0; 72 73 awalketikan = true; 74 entrypertama = true; 75 entrydesimal = false; 76 } 77 78 //----------------------- 79 // Mengatur panel atas 80 //----------------------- 81 private void setpanelatas() 82 { 83 pemisahribuan.setforeground (new Color (0,0,0)); 84 pemisahribuan.setfont ( new Font ("arial", Font.PLAIN, 11)); 85 86 tampilan.setenabled (false); 87 tampilan.sethorizontalalignment (JTextField.RIGHT); 88 tampilan.setfont (new Font ("arial",font.bold,15)); 89 90 panelatas.setlayout (new BorderLayout()); 91 panelatas.add (tampilan, BorderLayout.CENTER); 92 panelatas.add (pemisahribuan, BorderLayout.SOUTH); 93 } 94 95 //------------------------- 96 // Mengatur panel tengah 97 //------------------------- 98 private void setpaneltengah() 99 { 100 paneltengah.setlayout (new GridLayout (5,4)); 101 102 for (int i=0; i<5*4; i++) 103 { 104 tombolfungsi[i].addactionlistener (this); 105 tombolfungsi[i].setfont ( new Font ("arial", Font.BOLD, 11)); 106 283

107 paneltengah.add (tombolfungsi[i]); 108 } 109 } 110 111 //------------------------ 112 // Mengatur panel bawah 113 //------------------------ 114 private void setpanelbawah() 115 { 116 tombolexit.addactionlistener (this); 117 118 informasi.setfont ( new Font ("arial", Font.BOLD, 11)); 119 tombolexit.setfont ( new Font ("arial", Font.BOLD, 11)); 120 121 panelbawah.setlayout (new BorderLayout()); 122 panelbawah.add (informasi, BorderLayout.WEST); 123 panelbawah.add (tombolexit, BorderLayout.EAST); 124 } 125 126 //-------------------------------- 127 // Proses pemisahan data ribuan 128 //-------------------------------- 129 private String pisahkan (StringBuffer data) 130 { 131 String temp = data.tostring(); 132 133 if (data.length() > 3) 134 { 135 temp = data.substring (data.length()-3); 136 data.delete (data.length()-3, data.length()); 137 138 temp = pisahkan (data) + ',' + temp.tostring(); 139 } 140 141 return (temp); 142 } 143 144 //------------------ 145 // Pemisah ribuan 146 //------------------ 147 private String pisahkanribuan (double data) 148 { 149 String string = Double.toString (data); 150 int titik = string.indexof ('.'); 151 String pecahan = string.substring (titik); 284

152 long bulat = new Double (datahasil).longvalue(); 153 154 string = Long.toString (bulat); 155 string = pisahkan (new StringBuffer (string)); 156 157 return (string + pecahan); 158 } 159 160 //------------------------------- 161 // Menghapus karakter terakhir 162 //------------------------------- 163 private void hapuskarakter() 164 { 165 if (tampilan.gettext().length() > 0) 166 { 167 StringBuffer data = new StringBuffer (tampilan.gettext()); 168 char terakhir = data.charat (data.length()-1); 169 170 if (terakhir == '.') 171 entrydesimal = false; 172 173 data.deletecharat (data.length()-1); 174 tampilan.settext (data.tostring()); 175 } 176 } 177 178 //----------------------------- 179 // Membatalkan data terakhir 180 //----------------------------- 181 private void batalkandata() 182 { 183 if (entrypertama) 184 datapertama = 0.0; 185 else 186 datakedua = 0.0; 187 188 tampilan.settext (""); 189 } 190 191 //------------------------- 192 // Mengupdate data angka 193 //------------------------- 194 private void updatedata (int index) 195 { 196 if (awalketikan) 197 tampilan.settext (""); 285

198 199 String label = tombolfungsi[index].getlabel(); 200 char karakter = label.charat(0); 201 StringBuffer data = new StringBuffer (tampilan.gettext()); 202 tampilan.settext (data.tostring() + karakter); 203 204 awalketikan = false; 205 } 206 207 //---------------------------- 208 // Mengupdate data operator 209 //---------------------------- 210 private void updateoperator (int index) 211 { 212 if (entrypertama) 213 { 214 StringBuffer data = new StringBuffer (tampilan.gettext()); 215 datapertama = Double.parseDouble (data.tostring()); 216 } 217 218 String label = tombolfungsi[index].getlabel(); 219 operator = label.charat(0); 220 entrypertama = false; 221 awalketikan = true; 222 } 223 224 //-------------------------------- 225 // Melakukan proses perhitungan 226 //-------------------------------- 227 private void prosesperhitungan() 228 { 229 StringBuffer data = new StringBuffer (tampilan.gettext()); 230 datakedua = Double.parseDouble (data.tostring()); 231 232 switch (operator) 233 { 234 case '+' : datahasil = datapertama + datakedua; 235 break; 236 case '-' : datahasil = datapertama - datakedua; 237 break; 238 case '*' : datahasil = datapertama * datakedua; 239 break; 240 case '/' : datahasil = datapertama / datakedua; 286

241 break; 242 case '^' : datahasil = Math.pow (datapertama, datakedua); 243 } 244 245 if (pemisahribuan.isselected()) 246 tampilan.settext (pisahkanribuan (datahasil)); 247 else 248 tampilan.settext (Double.toString (datahasil)); 249 250 entrypertama = true; 251 awalketikan = true; 252 } 253 254 //-------------------------- 255 // Menambah tanda desimal 256 //-------------------------- 257 private void tambahtandadesimal() 258 { 259 if (!entrydesimal &&!awalketikan) 260 { 261 entrydesimal = true; 262 263 StringBuffer data = new StringBuffer (tampilan.gettext()); 264 tampilan.settext (data.tostring() + '.'); 265 } 266 } 267 268 //------------------------------- 269 // Action terhadap respon user 270 //------------------------------- 271 public void actionperformed (ActionEvent event) 272 { 273 Object objek = event.getsource(); 274 int lokasi = 0; 275 276 if (objek == tombolexit) 277 System.exit (0); 278 else 279 { 280 for ( ; lokasi<20; lokasi++) 281 if (objek == tombolfungsi[lokasi]) 282 break; 283 284 switch (lokasi) 285 { 287

286 case 0 : hapuskarakter(); 287 break; 288 case 1 : batalkandata(); 289 break; 290 case 2 : resetnilai(); 291 tampilan.settext (""); 292 break; 293 case 16 : ; 294 case 12 : ; 295 case 13 : ; 296 case 14 : ; 297 case 8 : ; 298 case 9 : ; 299 case 10 : ; 300 case 4 : ; 301 case 5 : ; 302 case 6 : updatedata (lokasi); 303 break; 304 case 3 : ; 305 case 7 : ; 306 case 11 : ; 307 case 15 : ; 308 case 19 : updateoperator (lokasi); 309 break; 310 case 18 : prosesperhitungan(); 311 break; 312 case 17 : tambahtandadesimal(); 313 break; 314 } 315 } 316 } 317 } 318 319 //--------------- 320 // Class utama 321 //--------------- 322 public class CobaCalculator 323 { 324 public static void main (String[] args) 325 { 326 new MiniCalculator(); 327 } 328 } 288

E. LATIHAN Latihan 1: Modifkasi project kalkulator Modifikasi kalkulator mini tersebut, sehingga dapat melakukan perhitungan saintifik lain, seperti trigonometri (sin, cos, dll), perpangkatan, logarirmik. Latihan 2: Buatlah sebuah aplikasi converter untuk mengubah jarak dalam satuan mil ke km seperti pada gambar berikut 289

Latihan 3: Buatlah sebuah aplikasi yang menampilkan pilihan checkbox dan radiobutton seperti pada gambar Latihan 4: Modifikasi latihan 2 sehingga aplikasi dapat mengubah jarak dari km ke mil. Petunjuk : Berikan tambahan pilihan konversi berupa radio button. Latihan 5: Aplikasi konversi suhu Farenheit - Celcius. Buatlah aplikasi GUI untuk mengkonversi input suhu dari Farenheit ke Celcius dan sebaliknya. F. TUGAS Buatlah sebuah game Memory. Dalam aplikasi ini diberikan grid kotak 2 dimensi yang berisi pasangan gambar atau string yang sesuai. Ketika mengklik kotak, isinya akan terbuka. Kemudian klik kotak yang lain. Jika isinya sama, maka kotak akan tetap terlihat isinya. Jika tidak akan tertutup kembali. Aplikasi dapat dimainkan ulang dengan posisi isi kotak yang teracak, tidak sama dengan sebelumnya. G. LAPORAN RESMI Kumpulkan hasil percobaan di atas dan tambahkan analisa untuk tiap percobaan, latihan, dan tugas yang telah dibuat. 290