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.
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.
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
)
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(); } }
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)
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.
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(); } }
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(); } }
Sumber :http://java.lyracc.com/belajar/java-untuk-pemula/bit-gaya-shell
Tidak ada komentar:
Posting Komentar