Navigasi buku
Mengeset Warna
Kelas Control memiliki metode untuk mengeset latar belakang dan latar depan suatu kontrol. Pada Label, latar belakang Label adalah ruangan di sekitar garis tepi atau wilayah yang ditentukan dengan metode setBounds(), sedangkan latar depan Label adalah warna teksnya.
Karena kelas Control adalah kelas super dari kontrol-kontrol lain, bukan hanya Label, tetapi juga Button, Text dan Shell misalnya, maka metode-metode ini juga bisa digunakan oleh kontrol-kontrol lain yang merupakan kelas turunan dari Control. Latar belakang dan latar depan tiap-tiap kontrol berbeda-beda tergantung dari kontrolnya.
Berikut ini adalah beberapa metode pada kelas Control untuk mengatur warna.
| Metode | Penjelasan |
| setForeground(Color warna) | Mengeset warna latar depan suatu kontrol |
| setBackground(Color warna) | Mengeset warna latar belakang suatu kontrol |
| getForeground() | Mengambil warna latar depan suatu kontrol. Tipe keluarannya bertipe Color |
| getBackground() | Mengambil warna latar belakang suatu kontrol. Tipe keluarannya bertipe Color |
Perhatikan bahwa metode-metode di atas bekerja dengan menggunakan input dan output warna bertipe Color. Kelas Color terdapat pada paket org.eclipse.swt.graphics
Kelas Color
Instansi kelas Color digunakan untuk melambangkan warna yang sebenarnya yang telah diberikan oleh sistem operasi.
Kelas ini bisa dibuat dengan dua cara : mengambil instansi warna dari sistem, dan membuat objek sendiri dari paduan warna merah, hijau dan biru (RGB). Khusus untuk cara yang kedua, programmer bertanggung jawab untuk menghapus objek ini dari memori sistem dengan
menggunakan dispose() setelah kita selesai menggunakannya.
Mengambil warna sistem
Cara termudah untuk mengisi kelas Color untuk digunakan dalam mengeset latar belakang dan latar depan suatu kontrol adalah dengan mengambil warna sistem. Warna sistem terdiri dari dua jenis, yaitu warna deskriptif dan warna sistem.
Warna deskriptif adalah warna seperti yang kita kenal, seperti merah, hijau, biru. Akan tetapi setiap platform memiliki daftar warna tersendiri. Oleh karena itu, SWT menyimpan warna-warna ini dalam konstanta pada kelas SWT, misalnya SWT.COLOR_RED. Warna ini kita ubah menjadi objek bertipe Color dengan menggunakan perintah getSystemColor(int konstantaWarna) yang terdapat pada objek berkelas Display, misalnya
Color warna = display.getSystemColor(SWT.COLOR_RED);
Warna-warna deskriptif yang disimpan pada kelas SWT adalah sebagai berikut :
| Warna |
| SWT.COLOR_WHITE |
| SWT.COLOR_BLACK |
| SWT.COLOR_RED |
| SWT.COLOR_DARK_RED |
| SWT.COLOR_GREEN |
| SWT.COLOR_DARK_GREEN |
| SWT.COLOR_YELLOW |
| SWT.COLOR_DARK_YELLOW |
| SWT.COLOR_BLUE |
| SWT.COLOR_DARK_BLUE |
| SWT.COLOR_MAGENTA |
| SWT.COLOR_DARK_MAGENTA |
| SWT.COLOR_CYAN |
| SWT.COLOR_DARK_CYAN |
| SWT.COLOR_GRAY |
| SWT.COLOR_DARK_GRAY |
Warna sistem adalah warna yang dimiliki oleh sistem sebagai warna default suatu kontrol. Misalnya, warna default latar belakang tombol selalu sama pada Windows, demikian juga pada Linux. Jika warna ini diubah oleh user melalui Control Panel Windows, misalnya, maka seluruh aplikasi akan mengikuti warna ini. Keuntungannya, warna aplikasi yang kita buat akan selalu konsisten dengan warna sistem operasi. Warna sistem ini juga disimpan sebagai konstanta pada kelas SWT, dan digunakan dengan cara yang sama dengan warna deskriptif di atas.
Perlu diingat bahwa tidak semua sistem operasi memiliki kesemua warna ini. Untuk mengetahui warna aktual suatu widget kita bisa menggunakan perintah getBackground() dan getForeground seperti disebutkan di awal bagian ini.
Warna sistem yang disediakan oleh SWT adalah sebagai berikut
| Warna | Penjelasan |
| SWT.COLOR_WIDGET_DARK_SHADOW | Warna bayangan gelap suatu widget |
| SWT.COLOR_WIDGET_NORMAL_SHADOW | Warna bayangan normal suatu widget |
| SWT.COLOR_WIDGET_LIGHT_SHADOW | Warna bayangan terang suatu widget |
| SWT.COLOR_WIDGET_HIGHLIGHT_SHADOW | Warna bayangan highlight suatu widget |
| SWT.COLOR_WIDGET_FOREGROUND | Warna latar depan widget |
| SWT.COLOR_WIDGET_BACKGROUND | Warna latar belakang widget |
| SWT.COLOR_WIDGET_BORDER | Warna tepi |
| SWT.COLOR_LIST_FOREGROUND | Warna latar depan suatu list |
| SWT.COLOR_LIST_BACKGROUND | Warna latar belakang suatu list |
| SWT.COLOR_LIST_SELECTION | Warna latar belakang item yang dipilih |
| SWT.COLOR_LIST_SELECTION_TEXT | Warna teks item yang dipilih |
| SWT.COLOR_INFO_FOREGROUND | Warna latar depan tool tip |
| SWT.COLOR_INFO_BACKGROUND | Warna latar belakang tool tip |
| SWT.COLOR_TITLE_FOREGROUND | Warna latar depan judul jendela |
| SWT.COLOR_TITLE_BACKGROUND | Warna latar belakang judul jendela |
| SWT.COLOR_TITLE_BACKGROUND_GRADIENT | Warna gradasi latar belakang judul jendela (hanya pada Windows lama, seperti Windows 2000) |
| SWT.COLOR_TITLE_INACTIVE_FOREGROUND | Warna latar depan judul jendela yang tidak aktif |
| SWT.COLOR_TITLE_INACTIVE_BACKGROUND | Warna latar belakang judul jendela yang tidak aktif |
| SWT.COLOR_TITLE_INACTIVE_BACKGROUND_GRADIENT | Warna gradasi latar belakang judul jendela yang tidak aktif (hanya pada Windows lama, seperti Windows 2000) |
Kelas RGB
Kelas ini merupakan representasi dari warna merah, hijau dan biru (red, green, blue = RGB), yang merupakan komposisi suatu warna di layar. Kelas RGB berbeda dengan kelas Color di mana RGB hanya berisi representasi dari warna tersebut, bukan merupakan warna yang sesungguhnya yang bisa diolah atau diberikan kepada suatu kontrol.
Instasiasi dari kelas RGB bisa dibuat dengan menggunakan konstruktor dengan bentuk RGB(int merah, int hijau, int biru).
Karena tidak menggunakan memori dari sistem operasi, maka seringkali instansi kelas ini digunakan dalam transaksi data dengan widget lain, misalnya pada ColorDialog, warna yang dipilih oleh user akan disimpan dalam bentuk RGB.
Seperti disebutkan sebelumnya, instansi kelas ini tidak bisa digunakan langsung untuk mengeset latar belakang atau latar depan suatu kontrol. Untuk bisa digunakan, kita harus meminta alokasi dari sistem operasi, yaitu dalam bentuk objek bertipe Color. Caranya yaitu dengan menggunakan salah satu konstruktor kelas Color yang berbentuk seperti
Color(Device perangkat, RGB rgb)
Di sini perangkat bisa berupa display atau printer. Setelah kita berhasil meminta warna dari sistem operasi, kita bisa mengecek apakah warna yang dihasilkan sesuai dengan yang kita berikan dengan menggunakan metode pada kelas Color, yaitu
getRed()untuk mendapatkan warna merahgetGreenuntuk mendapatkan warna hijaugetBlue()untuk mendapatkan warna birugetRGB()untuk mendapatkan objek bertipeRGByang merupakan gabungan merah, hijau dan biru.
Apakah ini berarti bahwa warna yang kita minta belum tentu sama dengan warna yang diberikan suatu perangkat? Jawabannya benar. Untuk perangkat yang memiliki warna tak terbatas, warna yang kita set akan sama dengan warna yang kita dapat. Ada beberapa perangkat yang hanya memiliki sejumlah warna tertentu. Artinya, warna-warna yang didukung oleh perangkat ini terbatas jumlahnya. Ketika sistem operasi meminta warna dari perangkat ini, warna yang terdekat yang akan diberikan kembali kepada kita. Ini sangat berguna untuk menjamin portabilitas SWT di berbagai platform dan perangkat.
Mari kita lihat contoh berikut, di mana label akan kita berikan warna latar depan dan warna latar belakang yang berbeda dari defaultnya. Program lengkapnya bisa Anda unduh di sini.

package com.lyracc.warnalabel; import org.eclipse.swt.*; import org.eclipse.swt.widgets.*; import org.eclipse.swt.graphics.*; public class WarnaLabel { // Variabel-variabel widget kita deklarasikan sebagai // variabel privat private Display display; private Shell shell; private Label label1; private Label label2; private Color warna1; private Color warna2; // Konstruktor kelas ini, untuk menginisialisasi semua widget WarnaLabel() { // Membuat display dan shell baru display = new Display(); shell = new Shell(display); shell.setSize(250, 200); shell.setText("Hello SWT"); // Inisialisasi label label1 = new Label(shell, SWT.CENTER | SWT.BORDER); label1.setText("Hello dari SWT"); label1.setBounds(10, 10, 200, 25); // Set warna, cara pertama dengan mengambil warna dari sistem label1.setBackground(display.getSystemColor(SWT.COLOR_BLUE)); label1.setForeground(display.getSystemColor(SWT.COLOR_YELLOW)); label2 = new Label(shell, SWT.CENTER | SWT.BORDER); label2.setText("Hallo dari SWT"); label2.setBounds(10, 40, 200, 25); // Set warna, cara kedua dengan membuat objek Color dan RGB warna1 = new Color(display, new RGB(255,255,0)); // menggunakan objek RGB warna2 = new Color(display, 0, 0, 255); // konstruktor Color jenis lain label2.setBackground(warna1); label2.setForeground(warna2); warna1.dispose(); // objek ini harus dihapus manual dari memori warna2.dispose(); // objek ini harus dihapus manual dari memori } // Perintah "standar" SWT, harus ada pada setiap aplikasi SWT public void run() { shell.open(); while (!shell.isDisposed()) if (!display.readAndDispatch()) display.sleep(); display.dispose(); } /** * @param args */ public static void main(String[] args) { // Instansiasi kelas ini, kemudian jalankan run WarnaLabel jendela = new WarnaLabel(); jendela.run(); } }
| Sisipan | Ukuran |
|---|---|
| warnalabel.zip | 1.46 KB |


