Minggu, 02 Maret 2014

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.
MetodePenjelasan
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
WarnaPenjelasan
SWT.COLOR_WIDGET_DARK_SHADOWWarna bayangan gelap suatu widget
SWT.COLOR_WIDGET_NORMAL_SHADOWWarna bayangan normal suatu widget
SWT.COLOR_WIDGET_LIGHT_SHADOWWarna bayangan terang suatu widget
SWT.COLOR_WIDGET_HIGHLIGHT_SHADOWWarna bayangan highlight suatu widget
SWT.COLOR_WIDGET_FOREGROUNDWarna latar depan widget
SWT.COLOR_WIDGET_BACKGROUNDWarna latar belakang widget
SWT.COLOR_WIDGET_BORDERWarna tepi
SWT.COLOR_LIST_FOREGROUNDWarna latar depan suatu list
SWT.COLOR_LIST_BACKGROUNDWarna latar belakang suatu list
SWT.COLOR_LIST_SELECTIONWarna latar belakang item yang dipilih
SWT.COLOR_LIST_SELECTION_TEXTWarna teks item yang dipilih
SWT.COLOR_INFO_FOREGROUNDWarna latar depan tool tip
SWT.COLOR_INFO_BACKGROUNDWarna latar belakang tool tip
SWT.COLOR_TITLE_FOREGROUNDWarna latar depan judul jendela
SWT.COLOR_TITLE_BACKGROUNDWarna latar belakang judul jendela
SWT.COLOR_TITLE_BACKGROUND_GRADIENTWarna gradasi latar belakang judul jendela (hanya pada Windows lama, seperti Windows 2000)
SWT.COLOR_TITLE_INACTIVE_FOREGROUNDWarna latar depan judul jendela yang tidak aktif
SWT.COLOR_TITLE_INACTIVE_BACKGROUNDWarna latar belakang judul jendela yang tidak aktif
SWT.COLOR_TITLE_INACTIVE_BACKGROUND_GRADIENTWarna 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 merah
  • getGreen untuk mendapatkan warna hijau
  • getBlue() untuk mendapatkan warna biru
  • getRGB() untuk mendapatkan objek bertipe RGB yang 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();
    }
}
 
Sumber : http://java.lyracc.com/belajar/java-untuk-pemula/mengeset-warna 

Tidak ada komentar:

Posting Komentar