Tutorial Java Swing Layout Manager

Pada tutorial Java kali ini kita akan menambahkan komponen Java Swing dan membahas tentang layout manager. Pada tutorial sebelumnya Anda sudah mengetahui tentang dasar JFrame. Dimana hasil outputnya hanyalah frame kosong dan tidak memiliki kontrol apa-apa.

Kemudian Anda juga sudah mengetahui cara menambahkan komponen GUI pada frame.

Meskipun itu hanyalah sebuah tombol yang berada ditengah frame dengan ukuran yang sama atau menutupi frame dan terlihat tidak menarik. Tapi yang terpenting Anda mengerti mengenai apa yang terjadi dengan kode program yang Anda tulis dan itu sebenarnya yang terpenting dalam belajar pemrograman Java dasar.

Pada kesempatan ini Anda akan menambahkan kembali komponen pada window tersebut dan pengaturan tata letaknya pada frame dengan layout manager.

Pengetahuan mengenai layout manager untuk kontrol posisi di mana komponen itu akan diletakkan menjadi poin yang sangat penting.

Beberapa layout manager pada Java adalah:

Anda bisa memilih sesuai dengan kebutuhan Anda untuk membuat GUI yang bagus dan menarik.

Sebagai pengetahuan untuk Anda, contoh komponen adalah:

  • button
  • check box
  • combo box
  • list
  • menu
  • slider
  • radio button
  • spinner

Komponen itu sendiri adalah merupakan dasar sebuah aplikasi pada Java.

Pengertian dan Fungsi Layout Manager

Setiap container memiliki sebuah layout manager yang berupa objek yang akan bertanggung jawab untuk mengatur tata letak komponen-komponen di dalam container.

Dalam berbagai sistem jendela (window), komponen user interface di atur menggunakan pengukuran piksel dengan hard-coded. Sedangkan pengertian hard-coded itu sendiri adalah praktik pengembangan perangkat lunak yang menanamkan data secara langsung ke dalam kode sumber program atau objek lain yang dapat dieksekusi. Ini adalah kebalikan dari memperoleh data dari sumber eksternal atau menghasilkannya saat runtime.

Misalnya ketika programmer ingin menempatkan label pada koordinat (20, 20) dalam sebuah jendela dengan pengukuran pixel hard-coded. GUI bisa saja terlihat normal pada satu sistem namun tidak demikian pada sistem lainnya.

Oleh sebab itu LayoutManager menyediakan level abstraksi yang akan membantu Anda memetakan semua antar-muka pengguna pada semua sistem jendela (window).

Komponen-komponen GUI ditempatkan pada container dan kemudian akan diatur oleh layout manager. Pada program sebelumnya, Anda tidak menentukan dimana untuk menempatkan komponen GUI dalam frame tapi ternyata Java mengetahuinya.

Ini karena layout manager tetap bekerja dibelakang layar untuk menempatkan komponen-komponen pada lokasi yang tepat. Sebuah layout manager dibuat dengan menggunakan class LayoutManager.

Di dalam container, layout manager di atur menggunakan method setLayout(aLayoutManager).

Layout manager berfungsi untuk mengatur peletakkan komponen pada lokasi yang diinginkan pada window dan  mengatur ukuran komponen. Tentu aja ini memang merupakan subjek yang penting ketika Anda ingin menambahkan mendesain GUI yang user friendly.

Bisa Anda bayangkan jika semua komponen yang kita letakkan pada frame berantakan karena tidak ada yang mengatur  tata letak atau menyesuaikan ukurannya. Tentu GUI yang ditampilkan menjadi buruk.

Baca Juga:  Memahami Layout Manager: CardLayout Pada GUI Java

Oleh sebab itulah Java menyediakan layout manager yang sangat bermanfaat untuk mengatur tata letak komponen. Satu hal yang pasti bahwa layout manager membuat desain GUI menjadi lebih mudah.

Layout Manager Memudahkan Pekerjaan Anda Ketika Berurusan Dengan GUI Programming

Layout manager juga memudahkan pekerjaan. Anda tidak perlu menghitung penempatan komponen yang diperlukan. Anda juga tidak harus berurusan dengan ratusan baris kode yang diperlukan untuk menemukan ukuran komponen dan menghitung posisi absolutnya hanya untuk layout yang sederhana.

Apalagi jika Anda khawatir dengan apa yang terjadi ketika user mengubah ukuran jendela. Layout manager akan menanangani semua itu untuk Anda. Dengan layout manager juga akan mudah untuk mengatur berapa banyak ruang yang dibutuhkan komponen, mengatur posisi komponen sebaik mungkin di layar berdasarkan ukurannya pada platform yang digunakan, ruang yang tersedia, dan aturan-aturan dari layout manager.

Sekarang, untuk mengetahui berapa banyak ruang yang dibutuhkan komponen-komponen GUI maka layout manager akan memanggil method getMinimumSize (), getPreferredSize (), dan getMaximumSize() komponen untuk mendapatkan ukuran minimum, ukuran yang dipilih, dan ukuran maksimum yang diperlukan komponen untuk ditampilkan dengan benar.

Dengan demikian, setiap komponen harus mengetahui kebutuhan ruangnya sendiri. Layout manager selanjutnya akan menggunakan persyaratan ruang komponen tersebut untuk mengubah ukuran komponen dan mengaturnya di layar. Jadi, Anda tidak perlu mengkhawatirkan tentang posisi yang bergantung pada platform.

Komponen Yang Ditampilkan Oleh Layout Manager

Apakah layout manager akan selalu menampilkan semua komponennya? Tidak. Misalnya, Container dengan BorderLayout memiliki 40 komponen. Namun, BorderLayout hanya akan menampilkan paling banyak 5 di antaranya dengan komponen terakhir ditempatkan di masing-masing dari lima area namanya.

Contoh lainnya adalah CardLayout yang dapat mengelola banyak komponen tetapi menampilkan tepat satu komponen saja persekali waktu. Selain mengabaikan komponen, layout manager juga dapat melakukan apa pun yang diinginkan dengan ukuran minimum, ukuran pilihan atau preferred, dan ukuran maksimum komponen. Jadi, masuk akal jika layout manager juga dapat mengabaikan preferred size.

Layout manager juga dapat mengabaikan ukuran minimum. Bahkan kadang tidak ada alternatif yang masuk akal karena container mungkin tidak memiliki cukup ruang untuk menampilkan komponen dengan ukuran minimumnya. Cara menangani situasi ini diserahkan kepada kebijaksanaan desainer pengelola layout.

Interface Layout Manager

Interface LayoutManager adalah fondasi yang menjadi dasar semua layout manager. Seperti interface lainnya pada Java, LayoutManager menetapkan method yang harus diimplementasikan, tetapi tidak menjelaskan sedikitpun tentang bagaimana LayoutManager melakukan tugasnya.

Baca Juga:  Belajar GUI Pada Java: Class Component, Container, dan Helper

Interface LayoutManager akan bertanggung jawab sebagai manajer yang mengatur tata letak objek Component dalam Container. Seperti yang dijelaskan sebelumnya, layout manager juga bertugas menentukan posisi dan ukuran setiap komponen di dalam Container.

Dalam hal ini, method interface LayoutManager tidak pernah dipanggil secara langsung karena sebagian besar pekerjaan layout manager dilakukan di belakang layar.

Setelah objek LayoutManager dibuat dan memberi tahu container untuk menggunakannya dengan memanggil setLayout(manager), Anda sudah selesai dan selanjutnya sistem akan memanggil metode yang sesuai dari layout manager bila diperlukan.

Berikut ini adalah 5 method pada interface LayoutManager:

Jika suatu class mengimplementasikan interface LayoutManager,  maka 5 method itu harus didefinisikan, ingat pembahasan mengenai interface. Meskipun banyak metode yang tidak melakukan apapun tetapi Anda tetap harus menyertakan method dengan signature yang sesuai.

Metode addLayoutComponent() dipanggil hanya saat menambahkan komponen dengan memanggil metode add(String, Component) atau add(Component, Object), bukan hanya add(Component) saja. Untuk  add(Component, Object), Objek harus bertipe String.

Interface LayoutManager2

Ketika Anda memerlukan setiap komponen untuk menerapkan batasan (constraint) dari layout manager, maka interface LayoutManager2 akan memainkan perannya. Layout manager yang menggunakan LayoutManager2 adalah BorderLayout, CardLayout, dan GridBagLayout.

Berikut ini adalah lima method tambahan dari interface LayoutManager2:

Method addLayoutComponent() akan dipanggil jika Anda menetapkan constraint ke komponen saat menambahkannya ke layout.

Dengan kata lain, Anda menambahkan komponen ke container dengan memanggil method addLayoutComponent(Component comp, Object constraints) atau add(String name,
Component component), daripada method add(Component component).

BorderLayout

Secara default, BorderLayout adalah layout manager untuk content pane dari JFrame, JWindow, JDialog, JInternalFrame, dan JApplet. BorderLayout memberikan Anda cara yang lebih fleksibel ketika ingin memposisikan komponen di sepanjang tepi frame.

BorderLayout membagi container kedalam lima area seperti arah mata angin, yaitu East, South, West, North, dan Center. Komponen-komponen ditambahkan ke BorderLayout dengan menggunakan method add(Component, index). Sedangkan index itu sendiri adalah sebuah constant dari:

  • BorderLayout.EAST
  • BorderLayout.SOUTH
  • BorderLayout.WEST
  • BorderLayout.NORTH
  • BorderLayout.CENTER
Baca Juga:  Memahami Layout Manager: Box Layout Pada GUI Java

Ada dua constructor untuk BorderLayout:

  • public BorderLayout()
  • public BorderLayout(int hgap, int vgap)

Jarak atau gap horisontal atau vertikal default dari border layout adalah 0 piksel. Artinya komponen-komponen posisinya rapat bersebelahan satu sama lainnya.

Komponen ditata sesuai dengan ukuran yang diinginkan dan juga penempatannya. Komponen NORTH dan SOUTH bisa meregang secara horisontal sedangkan komponen EAST dan WEST secara vertikal. Tapi komponen CENTER bisa meregang secara horizontal atau vertikal untuk mengisi ruang kosong.

BorderLayout punya properti hgap dan vgap. Jadi anda bisa menggunkan method setHgap() dan setVgap() untuk menentukan gap vertikal dan horisontal komponen.

Berikut ini adalah contoh program GUI dengan BorderLayout:

Output:

border-layout-gui-java

Kalau Anda perhatikan dari output program tersebut, border layout itu membagi area menjadi lima bagian dan masing-masing bisa menampung sebuah komponen.

Nah, itulah cara mudah menambahkan Java swing komponen pada frame sebagai container dan mengaturnya dengan layout manager (dalam hal ini adalah border layout). Mohon share tutorial ini jika Anda rasa akan bermanfaat bagi orang lain.

Leave a Comment