Graphical User Interface

Graphical User Interface merupakan antar muka grafis yang memfasilitasi interaksi antara pengguna dengan program aplikasi. Salah satu komponen dalam bahasa pemrograman Java untuk membangun GUI adalah Swing. Komponen ini didefinisikan di dalam paket javax.swing. Swing diturunkan dari Abstract Windowing Toolkit dalam paket java.awt. Hirarki dari komponen Swing adalah : java.swing.Jcomponent à java.awt.Container à java.awt.Component à Java.Lang. Object

JComponent adalah superclass dari semua komponen Swing. Sebagian besar fungsionalitas komponen diturunkan dari superclass ini. Beberapa komponen utama dalam GUI adalah:

1.      Containers: merupakan wadah yang berfungsi untuk menempatkan komponen- komponen lain di dalamnya.

2.      Canvas.: merupakan komponen GUI yang berfungsi untuk menampilkan gambar atau untuk membuat program grafis. Dengan canvas, kita bisa menggambar berbagai bentuk seperti lingkaran, segitiga, dll.

3.      User Interface (UI) components: contohnya adalah buttons, list, simple popup menus, check boxes, text fields, dan elemen lain

4.      Komponen pembentuk window: seperti frames, menu bars, windows, dan dialog boxes.

 

Berikut adalah beberapa komponen dasar antarmuka pengguna (user interface) yang disediakan oleh Swing:

1.    Top level containers: adalah container dasar untuk meletakkan komponen- komponen lain. Contohnya adalah JFrame, JDialog, dll.

2.      Intermediate level containers: merupakan container perantara. Umumnya digunakan hanya untuk meletakkan atau mengelompokkan komponen-komponen yang digunakan, baik itu container atau berupa atomic component. Contoh dari Intermediate level container adalah JPanel (panel).


3.      Atomic component: merupakan komponen yang memiliki fungsi khusus. Umumnya pengguna langsusng berinteraksi dengan komponen ini. Contohnya adalah JButton (tombol), JLabel (label), JTextField, JTextArea (area untuk menulis teks), dll.

4.    Layout Manager Berfungsi untuk mengatur bagaiman tata letak/posisi dari komponen yang akan diletakkan, satu sama lain di dalam suatu container. Secara default ada 6 buah layout : BorderLayout, BoxLayout, FlowLayout, CardLayout, GridBagLayout & GridLayout

5.   Event Handling : Menangani event yang dilakukan oleh user seperti menekan tombol, memperbesar atau memperkecil ukuran frame, mengklik mouse, mengetik sesuatu dengan keyboard, dll.

Konstruktor untuk membentuk JFrame adalah JFrame() atau JFrame(String NamaFrame). Salah satu method yang sering digunakan di kelas JFrame adalah setDefaultCloseOperation(int ops). Method ini berfungsi untuk mengatur apa yang akan dilakukan oleh program ketika tombil close di klik. Parameter method tersebut di antaranya adalah:

1.      JFrame.DO_NOTHING_ON_CLOSE: tidak ada satu aktivitas pun yang dilakukan secara otomatis apabila frame ditutup.

2.    JFrame.HIDE_ON_CLOSE: frame hanya disembunyikan, namun secara fisik frame masih ada di memori sehingga dapat dimunculkan kembali. Merupakan aktivitas default.

3.      JFrame.DISPOSE_ON_CLOSE: mengilangkan tampilan frame dari layar, menghilangkannya dari memori, dan membebaskan resource yang dipakai.

4.  JFrame.EXIT_ON_CLOSE: menghentikan eksekusi program.

 

Top level container yang lain adalah JDialog. Berbeda dengan JFrame, JDialog tidak dibuat berdiri sendiri, melainkan dibuat bersama-sama dengan frame sebagai parent-nya. Jika frame parent-nya ditutup, maka dialog akan dihapus dari memori. Kemunculan dialog akan membuat semua input terhadap frame parent-nya akan terblokir sampai dialog tersebut ditutup.

 

Layout Management

Untuk mengatur layout dari setiap komponen-komponen GUI yang diletakkan pada container, digunakan layout manager.Setiap pane secara default pasti memiliki layout manager. Jika ingin mengubah layout-nya, gunakan void setLayout(LayoutManager mgr) Java menyediakan 6 buah class standar yang dapat digunakan sebagai layout manager yang terdapat dalam package java.awt, yaitu FlowLayout , GridLayout , BorderLayout , CardLayout ,GridBagLayout , BoxLayout

1.      Flow Layout merupakan layout manager default yang digunakan JPanel. Layout manager ini meletakkan kompenen yg ada secara berurutan dari kiri ke kanan dan berpindah baris jika dibutuhkan. Jarak antar komponen baik secara vertikal


maupun horizontal dapat ditentukan sendiri. Selain itu, kita bisa menentukan alignment dari komponen yang diletakkan, yaitu rata kanan, rata kiri atau di tengah

2.      GridLayout merupakan layout manager berbentuk grid. Semua komponen dalam layout ini memiliki ukuran yang sama. Konstruktor GridLayout adalah sebagai berikut.

a.  GridLayout(rows, columns, hGap, vGap). Konstruktor ini mendefinisikan jumlah baris, kolom, dan ukuran gap horisontal/vertikal antar elemen dalam pixel.

b.  GridLayout(rows, columns). Konstruktor yang digunakan dengan nilai

default hGap dan vGap sama dengan 0.

3.      BorderLayout adalah default manager untuk ContentPane. Layout ini menempatkan komponen dengan pendekatan arah mata angin north, south, west, center, east.

4.      Cardlayout digunakan untuk menampilkan container-container/panel-panel seperti tumpukan kartu. Hanya satu container yang akan tampil untuk satu waktu. komponen yang diletakkan dengan layout ini berupa object yang bertipe intermediate container yang di dalamnya terdapat atomic component.Salah satu contoh intermediate container adalah tabbed pane (JTabbedPane)

5.      GridBaglayout

Grid bag layout adalah pengaturan layout yang dapat digunakan untuk meletakkan komponen secara bebas. Setiap komponen dapat menempati ukuran yang berbeda dengan komnponen lainnya.

Boxlayout digunakan untuk meletakkan komponen berurutan ke kanan (sumbu X) atau berurutan ke bawah (sumbu Y).Penggunaan BoxLayout menggunkan class Box dimana merupakan container yang secara internal telah menggunakan BoxLayout sebagai layout manager-nya.

 

Eksepsi adalah mekanisme yang memungkinkan program untuk menangkap kondisi-kondisi tertentu yang membutuhkan penanganan khusus. Eksepsi dapat berupa kesalahan yang terjadi dalam program pada saat run time. Format eksepsi adalah :

Try {

// blok program

. . . . . .

} catch (EksepsiTipe1 e) {

// blok program untuk EksepsiTipe1

. . . . . .

} catch (EksepsiTipe2 e) {

// blok program untuk EksepsiTipe2

. . . . . .

} catch (EksepsiTipe3 e) {

// blok program untuk EksepsiTipe3

. . . . . .

} finally {

// blok program

. . . . . . }

try menyatakan bahwa dalam blok try dapat terjadi suatu ekspresi dan bila ekspresi terjadi, maka aktifkan program yang berada dalam kelompok (blok) catch sesuai dengan tipe ekspresinya.


Object e dari tipe ekspresi dapat digunakan sebagai referensi penanganan eksepsi aktual.

finally menyatakan bahwa apapun jenis tipe ekspresinya, maka program dalam blok ini harus tetap dijalankan.

Dengan menangkap eksepsi program tidak langsung berhenti dan melaporkan kesalahan tersebut, melainkan membelokkan dengan program pengaman tertentu. Pada saat run time, jika java menemukan kesalahan dan melempar pesan ke program. Dengan pesan ini, program akan melakukan suatu aksi tertentu. Mekanisme melempar ini disebut juga sebagai throw, alur program akan dihentikan, kemudian program pengendali (exception handling) akan diaktifkan.

 

throw

Throw digunakan secara eksplisit untuk membuang sebuah eksepsi. Contoh berikutnya, TestThrow mendefinisikan Obyek Eksepsi “NullPointerException” pada sebuah variabel t.

Dengan instruksi throw, program Eksepsi untuk kemudian ditangkap oleh instruksi catch. Namun tentunya yang ditangkap harus sesuai degan tipe eksepsi yang dilemparkan. Dalam hal ini program

throws

Eksepsi selalu ditangkap dengan catch pada blok dimana eksepsi tersebut dilempar. Tanpa catch, program tidak akan dikompilasi. Program dibawah ini menghilangkan try dan catch pada subroutine demo( ), namun dengan menggunakan tambahan kata kunci throws Exception.


 

Exceptions

Description

Arithmeticexception

Disebabkan oleh error secara matematika seperti

pembagian dengan nol

ArrayIndexOutOfBouns

Exception

Disebabkan oleh array index yang salah

ArrayStoreException

Disebabkan ketika program mencoba menyimpan

file data yang salah


 

FileNotFoundException

Disebabkan oleh usaha mengakses file yang tidak

ada

IOException

Disebabkan oleh general I/O failures, seperti

kegagalan membaca file

NullPointException

Disebabkan oleh mereferensi obyek null

NumberFormatException

Disebabkan ketika konversi antara string dan

bilangan gagal

OutOfMemoryException

Disebabkan ketika tidak cukup memory untuk

alokasi obyek

 

SecurityException

Disebabkan    ketika    sebuah    applet    mencoba melakukan aksi yang tidak diperbolehkan oleh

setting security browser

StackOverflowException

Disebabkan ketika sistem run melebihi kapasitas

stack

StringIndexOutOfBounds

Exception

Disebabkan ketika program mencoba mengakses

posisi karakter yang tidak ada di dalam string

Comments