Minggu, 02 Maret 2014

Mengeset Huruf

Kelas Control memiliki metode untuk mengeset huruf kontrol. Berikut ini adalah beberapa metode pada kelas Control untuk mengatur warna.
MetodePenjelasan
setFont(Font huruf)Mengeset huruf suatu kontrol
getFont()Mengambil huruf suatu kontrol. Tipe keluarannya bertipe Font
Perhatikan bahwa metode-metode di atas bekerja dengan menggunakan input dan output huruf bertipe Font. Kelas Font terdapat pada paket org.eclipse.swt.graphics.
Seperti pada warna dengan Color dan RGB, huruf memiliki dua kelas sejenis, yaitu Font dan FontData. Kelas Font, seperti Color adalah huruf yang sudah dialokasikan oleh sistem operasi, sedangkan FontData seperti RGB adalah representasi huruf yang belum dialokasi oleh sistem operasi.
Ingat bahwa jenis huruf sangat dipengaruhi oleh sistem operasi. Jenis huruf tertentu hanya ada pada sistem operasi tertentu, sehingga sangat sulit untuk membuat aplikasi yang bergantung pada huruf tertentu. Kita bisa juga mengontrol penggunaan huruf hingga detail, misalnya jeda antar huruf, tinggi huruf dan lainnya, tapi dalam prakteknya, teknik ini jarang digunakan untuk memodifikasi suatu kontrol. Kecuali jika Anda ingin membuat widget sendiri, atau ingin menggambar langsung pada kanvas. Kita tidak akan membahas hingga ke level detail seperti ini.
Kelas Font
Instansi kelas Font digunakan untuk melambangkan huruf yang sebenarnya yang telah diberikan oleh sistem operasi.
Kelas ini bisa hanya bisa dibuat dengan membuat objek sendiri dengan menggunakan konstruktornya. Programmer bertanggung jawab untuk menghapus objek ini dari memori sistem dengan menggunakan dispose() setelah kita selesai menggunakannya. Berikut ini adalah konstruktor kelas Font yang tersedia :
KonstruktorPenjelasan
Font(Device device, FontData fd)Membuat huruf pada suatu perangkat (baik display atau printer) dengan input FontData
Font(Device device, FontData[] fds)Membuat huruf pada suatu perangkat (baik display atau printer) dengan input beberapa FontData yang tersusun dalam bentuk array (hanya Mac OS yang bisa memiliki lebih dari satu jenis huruf)
Font(Device device, String name, int height, int style)Membuat huruf pada suatu perangkat (baik display atau printer) dengan input nama, tinggim dan gayanya. Gaya adalah salah satu atau gabungan dari SWT.NORMAL, SWT.BOLD, dan SWT.ITALIC
Mengambil instansi FontData dari Font
Misalnya kita hanya ingin mengubah ukuran huruf dari suatu kontrol. Cara yang paling mudah dan bisa bekerja untuk semua platform adalah dengan mengambil huruf yang digunakan suatu kontrol, dengan menggunakan getFont(), kemudian mengambil instansi FontData dari Font yang dihasilkan. Kemudian kita konstruksi lagi Font baru dengan menambahkan ukuran huruf, atau gayanya. Dengan huruf yang baru, kita gunakan setFont() untuk mengaplikasikannya pada kontrol kita.
Untuk mengambil FontData dari suatu Font, kita bisa gunakan metode instansi getFontData() dari kelas Font. Akan tetapi yang dikembalikan adalah array dari FontData. Pada Windows hanya ada satu huruf yang dikembalikan, akan tetapi pada Mac OS, beberapa huruf bisa dikembalikan. Misalnya lihat contoh berikut ini.
....
Font huruf = label1.getFont();
FontData[] dataHuruf = huruf.getFontData();
....
Kelas FontData
Kelas FontData bisa diambil dari suatu widget (seperti contoh sebelumnya), dari sistem operasi (mengambil huruf yang disediakan oleh sistem operasi), atau membuatnya sendiri.
Untuk mengambil FontData yang tersedia pada suatu perangkat, kita bisa menggunakan metode instansi getFontList(String namaFace, boolean scalable) dari suatu perangkat yang dikembalikan dalam bentuk array. namaFace adalah nama huruf yang akan kita ambil, dan jika scalable bernilai true, hanya huruf yang bisa diperbesar/diperkecil tanpa mengurangi keindahan huruf saja yang akan diambil. Misalnya contoh berikut mengambil semua huruf yang tersedia pada display,
FontData[] daftarHuruf = display.getFontList(null, true);
Untuk membuat FontData dari konstruktornya, tersedia beberapa jenis konstruktor, yaitu
KonstruktorPenjelasan
FontData()Membuat instansi FontData kosong
FontData(String string)Membuat instansi FontData dengan input string yang menjelaskan nama dan ukuran huruf, dengan format seperti yang dikembalikan oleh metode toString()
FontData(String nama, int tinggi, int gaya)Membuat instansi FontData dengan input nama, tinggi huruf dan gaya. Gaya huruf bisa merupakan salah satu atua kombinasi dari SWT.NORMAL, SWT.BOLD dan SWT.ITALIC
Untuk memanipulasi FontData berikut ini adalah beberapa metode yang bisa digunakan
MetodePenjelasan
getName()Mengembalikan String yang merupakan nama huruf
setName(String nama)Mengeset nama huruf
getStyle()Mengembalikan int yang merupakan gaya huruf
setStyle(int gaya)Mengeset gaya huruf, salah satu atau kombinasi dari SWT.NORMAL, SWT.BOLD dan SWT.ITALIC
getHeight()Mengembalikan int yang merupakan tinggi atau ukuran huruf
setHeight(int tinggi)Mengeset tinggi huruf
getLocale()Mengambil kedaerahan (locale) huruf dalam bentuk String
setLocale(String locale)Mengeset kedaerahan huruf
Mari kita simak contoh berikut ini. Kita akan membuat label dengan miring dan tebal dari suatu kontrol. Ukurannya juga akan kita ubah menjadi 2 kali lipatnya. Algoritmanya bisa dituangkan sebagai berikut :
  • Ambil Font dari label tersebut
  • Ambil FontData dari Font
  • Modifikasi setiap FontData yang dikembalikan
  • Buat Font baru
  • Gunakan setFont() untuk mengeset huruf ke label tersebut
Algoritma tersebut dapat kita tuangkan seperti
...
Font huruf = label1.getFont();
FontData[] dataHuruf = huruf.getFontData();
for (int i = 0; i < dataHuruf.length; i++) {
    dataHuruf[i].setStyle(SWT.BOLD | SWT.ITALIC);
    dataHuruf[i].setHeight(dataHuruf[i].getHeight() * 2);
}
Font hurufBaru = new Font(display, dataHuruf);
label1.setFont(hurufBaru);
hurufBaru.dispose();
...
Kita modifikasi sedikit program kita sebelumnya untuk menampilkan label dengan huruf dan warna berbeda. Program lengkapnya bisa diunduh di sini.

package com.lyracc.hurufdanwarnalabel;
 
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.graphics.*;
 
public class HurufDanWarnaLabel {
 
    // 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
    HurufDanWarnaLabel() {
        // Membuat display dan shell baru
        display = new Display();
        shell = new Shell(display);
        shell.setSize(500, 200);
        shell.setText("Hello SWT");
 
        // Inisialisasi label
        label1 = new Label(shell, SWT.CENTER | SWT.BORDER);
        label1.setText("Hello dari SWT");
        label1.setBounds(10, 10, 400, 50);
 
        // Set warna, cara pertama dengan mengambil warna dari sistem
        label1.setBackground(display.getSystemColor(SWT.COLOR_BLUE));
        label1.setForeground(display.getSystemColor(SWT.COLOR_YELLOW));
 
        // Modifikasi huruf
        Font huruf = label1.getFont();
        FontData[] dataHuruf = huruf.getFontData();
        for (int i = 0; i < dataHuruf.length; i++) {
            dataHuruf[i].setStyle(SWT.BOLD | SWT.ITALIC);
            dataHuruf[i].setHeight(dataHuruf[i].getHeight() * 2);
        }
        Font hurufBaru = new Font(display, dataHuruf);
        label1.setFont(hurufBaru);
        hurufBaru.dispose();
 
        label2 = new Label(shell, SWT.CENTER | SWT.BORDER);
        label2.setText("Hallo dari SWT");
        label2.setBounds(10, 70, 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
        HurufDanWarnaLabel jendela = new HurufDanWarnaLabel();
        jendela.run();
    }
}
 
Sumber : http://java.lyracc.com/belajar/java-untuk-pemula/mengeset-huruf 

Tidak ada komentar:

Posting Komentar