Navigasi buku
Bit Gaya Shell
Shell memiliki beberapa bit gaya yang dibagi menjadi 3 jenis, sebagai berikut. Akan tetapi perlu diingat bahwa bit gaya untuk shell hanya digunakan sebagai bantuan saja. Apa yang digambar oleh manager jendela setiap sistem operasi bisa berbeda-beda.
1. Gaya yang mempengaruhi tampilan, suatu jendela bisa memiliki satu atau beberapa bit gaya berikut
SWT.BORDER, suatu jendela memiliki garis tepi di sekitarnyaSWT.NO_TRIM, suatu jendela tanpa garis tepi (bisa digunakan untuk tool tip), akan tetapi tidak bisa digabungkan dengan SWT.BORDERSWT.CLOSE, suatu jendela memiliki tombol Close (atau biasanya sering digambar dengan X) di pojok kanan atas jendelaSWT.MIN, suatu jendela memiliki tombol Minimize (biasanya sering digambar dengan -) di pojok kanan atas jendelaSWT.MAX, suatu jendela memiliki tombol Maximimze di pojok kanan atas jendelaSWT.RESIZE, suatu jendela memiliki tombol Resize di pojok kanan atas jendelaSWT.TITLE, suatu jendela memiliki judul.SWT.ON_TOP, suatu jendela yang akan berada di atas jendela-jendela lain bahkan jendela dari aplikasi lain. Jendela ini tidak memblok input ke jendela lain, artinya hanya tampilannya saja yang berada paling atas. Bisa digunakan untuk menampilkan logo pada saat program pertama kali dijalankan.SWT.TOOL, suatu jendela yang berbentuk seperti tips sesaat yang tujuannya memberikan bantuan kepada user. Dalam Eclipse, biasanya toop tips ini muncul ketika kita mengarahkan mouse ke suatu perintah, kemudian berhenti sesaat di sana. Kemudian akan muncul bantuan tentang suatu perintah tersebut, yang menjelaskan di antaranya input dan output suatu metode dan komentar bagaimana menggunakan suatu metode.
2. Bit gaya yang mempengaruhi modalitas suatu jendela
Modalitas adalah bagaimana suatu jendela mempertahankan fokus input pada dirinya dan memblokade input ke jendela lain. Modalitas suatu jendela tergantung pada siapa yang bisa diblokade inputnya. Hanya salah satu modalitas saja yang bisa diberikan kepada suatu jendela
SWT.MODELESS, suatu jendela tidak memblok jendela lain, biasanya merupakan default dari suatu jendela shell tingkat atas yang baru dibuatSWT.PRIMARY_MODAL, suatu jendela memblok input induknya, biasanya digunakan untuk kotak dialogSWT.APPLICATION_MODAL, suatu jendela memblok input jendela-jendela lain pada aplikasi yang samaSWT.SYSTEM_MODAL, suatu jendela memblok seluruh jendela bahkan jendela aplikasi lain.
3. Bit gaya untuk kenyamanan pemrograman
SWT memberikan beberapa bit gaya yang bisa digunakan seorang programmer yang merupakan gabungan dari beberapa bit gaya di atas, yang merupakan kombinasi yang sering digunakan dalam aplikasi. Oleh karena itu bit gaya ini digunakan untuk kenyamanan programmer akan tetapi memiliki efek yang persis sama dengan apabila kita menggabungkannya sendiri
SWT.SHELL_TRIM, merupakan gaya shell yang biasa digunakan untuk jendela suatu aplikasi. Merupakan gabungan dari (SWT.CLOSE|SWT.TITLE|SWT.MIN|SWT.MAX|SWT.RESIZE)SWT.DIALOG_TRIM, merupakan gaya shell yang biasa digunakan untuk kotak dialog. Merupakan gabungan dari (SWT.CLOSE|SWT.TITLE|SWT.BORDER)
Untuk melihat efek dari beberapa bit gaya di atas, lakukan ekspremen kecil pada program berikut :
package com.lyracc.contohshell; import org.eclipse.swt.*; import org.eclipse.swt.widgets.*; public class ContohShell { /** * @param args */ public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display, SWT.CLOSE | SWT.BORDER); shell.open(); while (!shell.isDisposed()) if (!display.readAndDispatch()) display.sleep(); display.dispose(); } }
Anda bisa mengganti-ganti kontruktor shell dengan beberapa kombinasi berikut dan lihat hasilnya sendiri :
Shell shell = new Shell(display, SWT.SHELL_TRIM)Shell shell = new Shell(display, SWT.DIALOG_TRIM)Shell shell = new Shell(display, SWT.TOOL)Shell shell = new Shell(display, SWT.CLOSE | SWT.BORDER)Shell shell = new Shell(display, SWT.NO_TRIM)
Beberapa contoh di atas tidak akan menampilkan tombol close, sehingga untuk mematikannya Anda harus menghentikannya dari dalam Eclipse dengan menekan tombol 
Contoh berikut (kode lengkapnya untuk diimport ke dalam Eclipse bisa diunduh di sini) ini membuat shell kosong, jika mouse kita berhenti di suatu tempat (hover), shell baru yang berisi tool tip akan ditampilkan, seperti pada gambar berikut. Tool tip ini akan hilang jika mouse berpindah tempat.

Untuk membuatnya, kita akan membuat satu kelas yang khusus menangani event, yang kita namakan ToolTipListener. Kelas ini mengimplementasikan MouseMoveListener dan MouseTrackListener (lihat bagian penanganan mouse untuk apa apa listener digunakan). MouseTrackListener digunakan untuk menangkap event hover yang akan membuat shell baru, kemudian menambahkan label untuk menampilkan tulisan ToolTip. Shell baru ini kita buat dengan bit gaya SWT.TOOL. Berikut ini adalah listing dari kelas ToolTipListener.
package com.lyracc.tooltipdemo; import org.eclipse.swt.*; import org.eclipse.swt.events.*; import org.eclipse.swt.widgets.*; import org.eclipse.swt.layout.*; import org.eclipse.swt.graphics.*; public class ToolTipListener implements MouseTrackListener, MouseMoveListener { Shell tip = null; Label label = null; // Metode buatToolTip dipanggil oleh event hover void buatToolTip(MouseEvent e) { // Ambil display dan shell utama dari event Display displayUtama = e.display; Shell shellUtama = displayUtama.getActiveShell(); // Buat tool tip baru sebagai shell, dengan bit gaya SWT.ON_TOP tip = new Shell(shellUtama, SWT.ON_TOP); tip.setLayout(new FillLayout()); // Tambahkan label label = new Label(tip, SWT.NONE); label.setText("ToolTip"); // Tambahkan tip ke dalam shell supaya bisa digambar tip.pack(); } // Metode tutupToolTip dipanggil ketika mouse pindah void tutupToolTip() { if (tip != null) tip.dispose(); tip = null; } @Override public void mouseEnter(MouseEvent e) { } @Override public void mouseExit(MouseEvent e) { // Jika mouse keluar dari shell, tutup tool tip tutupToolTip(); } @Override public void mouseHover(MouseEvent e) { // Jika tip sudah ada, keluar dan tidak lakukan apa-apa if (tip != null) return; // Jika belum ada, buat tool tip baru buatToolTip(e); // Mengambil display dan shell utama dari event yang memanggil Display displayUtama = e.display; Shell shellUtama = displayUtama.getActiveShell(); // Hitung di mana tool tip akan ditampilkan, diambil dari lokasi mouse // yang disimpan di dalam e.x dan e.y Rectangle rect = tip.getBounds(); rect.x = e.x; rect.y = e.y + 22; // Ubah posisi tip menggunakan metode setbounds tip.setBounds( displayUtama.map(shellUtama, null, rect)); // Buat supaya tip bisa dilihat (visible) tip.setVisible(true); } @Override public void mouseMove(MouseEvent e) { // Jika mouse pindah lokasi, tutup tool tip tutupToolTip(); } }
Kelas utamanya (yang memiliki metode main()) akan menginstansiasi kelas ToolTipListener dan menambahkan listener ke shell utamanya. Berikut ini adalah listing kelasnya.
package com.lyracc.tooltipdemo; import org.eclipse.swt.widgets.*; import org.eclipse.swt.layout.*; public class ToolTipDemo { /** * @param args */ public static void main(String[] args) { final Display display = new Display(); final Shell shell = new Shell(display); shell.setLayout(new FillLayout()); // Membuat instansi listener baru ToolTipListener tipListener = new ToolTipListener(); // Tambahkan listener ke dalam shell // (kelas listener kita mengimplementasi kelas MouseMoveListener // dan kelas MouseTrackListener, kita tambahkan listener tersebut // sendiri-sendiri) shell.addMouseMoveListener(tipListener); shell.addMouseTrackListener(tipListener); shell.pack(); shell.open(); while (!shell.isDisposed()) if (!display.readAndDispatch()) display.sleep(); display.dispose(); } }
| Sisipan | Ukuran |
|---|---|
| tooltipdemo.zip | 4.47 KB |



Komentar
fr
wahhh..., bagus banget ini buat belajar java... salam kenal semuaa....