Cari artikel di situs ini

Text

Versi ramah cetakVersi ramah cetak

Kelas Text digunakan sehingga user bisa mengetikkan atau mengedit suatu teks. Kelas ini juga merupakan turunan dari kelas Control sehingga memiliki metode, bit gaya, dan event seperti pada kelas Control lainnya. Berikut ini adalah metode, bit gaya, dan event khusus untuk kelas Text

Bit GayaTampilan (pada Linux)KeteranganAturan
SWT.BORDERMembuat garis tepi di sekitar teks
 
SWT.SINGLEMembuat input teks satu barisHanya boleh salah satu SWT.SINGLE atau SWT.MULTI
SWT.MULTIMembuat input teks banyak baris
SWT.LEFTKerapatan teks kiriHanya boleh salah satu
SWT.CENTERKerapatan teks tengah
SWT.RIGHTKerapatan teks kanan
SWT.PASSWORDInput teks password 
SWT.READ_ONLYMembuat input teks hanya bisa dibaca 
SWT.WRAPMembuat input teks yang terpotong (bukan tergulung). 

VariabelKeterangan
DELIMITERKarakter pemisah baris. Biasanya mengikuti sistem operasi (Windows "\r\n" dan Linux "\n") akan tetapi kita bisa atur sesuai kebutuhan
LIMITMaksimum karakter yang bisa dimasukkan ke dalam input teks

Kontrol Text adalah elemen user interface yang digunakan sehingga user bisa memasukkan atau mengedit string. Kontrol ini bisa dipilih. Pilhannya merupakan tempat di mana karakter akan dimasukkan. Jika pilihannya lebih dari satu karakter, kontrol Text akan menggambar karakter yang dipilih berbeda dengan karakter yang tidak dipilih (misalnya diberi warna latar belakang biru atau hitam, sedangkan teks yang dipilih berwarna terang). Jika pilihannya tidak ada, maka akan digambar seperti caret yang bentuknya seperti huruf I. Caret adalah garis vertikal yang muncul di antara karakter. Caret ini memberi petunjuk kepada user dimana karakter yang diketik akan dimasukkan.

Gambar berikut adalah caret yang diletakkan di akhir teks. Di bawahnya, ketika salah satu karakter dipilih.

Kontrol Text hanya mendukung teks "biasa". Artinya semua karakter pada kontrol ini memiliki jenis huruf dan warna yang sama. Jika kita membutuhkan kontrol untuk mengedit teks yang lebih fleksibel, kita bisa menggunakan org.eclipse.swt.custom.StyledText yang didesain untuk Eclipse. Perhatikan bahwa StyledText bukan widget alami bawaan sistem operasi.

Suatu program aplikasi bisa mendeteksi bahwa sesuatu dalam kontrol teks telah berubah, atau untuk memfilter huruf/angka ketika diketik oleh user. Misalnya, suatu aplikasi memberi teks peringatan bahwa hanya angka dari 0-9 saja yang bisa dimasukkan. Untuk itu, aplikasi akan mendengarkan event SWT.Modify dan SWT.Verify yang akan dijelaskan kemudian.

Ada dua jenis kontrol teks : yang memiliki satu baris teks dan yang memiliki beberapa baris teks.

Kontrol Text Satu Baris dan Multi Baris

Bit gaya SWT.SINGLE digunakan untuk membuat kontrol teks satu baris. Potongan kode berikut membuat kontrol teks satu baris yang dilengkapi dengan garis tepi, kemudian mengisi teksnya dengan "asd".

Text teks1 = new Text(shell, SWT.BORDER | SWT.SINGLE);
teks1.setText("asd");

Kontrol teks banyak baris dibuat dengan menggunakan bit gaya SWT.MULTI. Tidak seperti kontrol teks satu baris, kontrol teks banyak baris bisa kita lengkapi dengan SWT.H_SCROLL atau SWT.V_SCROLL pada bit gayanya untuk membuat scroll bar horizontal dan vertikal. Berikut ini adalah potongan kontrol banyak baris dengan garis tepi dan scroll bar, dengan teks yang cukup panjang.

teks2 = new Text(shell, SWT.BORDER | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
teks2.setText("Hallo SWT, saya sedang belajar " + Text.DELIMITER + "membuat program dengan SWT");
teks2.setSize(100, 70);

Operasi String

Kontrol Text memiliki beberapa metode untuk mengisi dan mengambil string dari widget mirip seperti Label dan Button.

MetodePenjelasan
setText(String s)Mengeset isi teks. Isi sebelumnya dihapus, kemudian isi baru dimasukkan. Caret akan ditempatkan pada awal teks. Jika teks berisi pemisah baris (misalnya "\n") pada kontrol dengan bit gaya SWT.SINGLE hasilnya tidak akan sesuai dengan yang diharapkan. Karakter mnemonik tidak didukung pada kontrol Text
getText()Mengambil String yang merupakan isi teks
getText(int mulai, int akhir)Mengambil String yang merupakan isi teks dimulai dari karakter ke-mulai hingga karakter ke-akhir, termasuk karakter ke-mulai dan karakter ke-akhir. Indeks dimulai dari nol. Jika indeks berada di luar jangkauan, SWT akan mencoba mengambil karakter sebanyak mungkin.
getCharCountMengembalikan int yang merupakan jumlah karakter pada kontrol.

Sebagian string dalam kontrol teks dapat dapat dipilih dengan menggunakan metode setSelection(). Metode ini mengambil argumen berupa posisi caret awal dan posisi caret akhir pilihan. Berikut ini adalah ilustrasi posisi caret di dalam suatu kontrol Text

MetodePenjelasan
setSelection(int caretAwal, int caretAkhir)Mengeset pilihan pada kontrol dari posisi caretAwal ke posisi caretAkhir. Jika caretAwal dan caretAkhir bernilai sama, maka caret akan berubah menjadi kursor di posisi tersebut.
setSelection(int caretAwal)Sama dengan memanggil dengan setSelection(caretAwal, caretAwal)
selectAll()Memilih semua string pada kontrol text. Sama dengan memanggil dengan setSelection(0, teks1.getCharCount())
clearSelection()Menghapus pilihan dan memindahkan kursor ke posisi pilihan pertama. (Misalnya, teks "hello" dipilih sebelumnya, setelah metode ini dipanggil, posisi kursor akan berpindah ke sebelum "h")
getSelection()Mengembalikan Point yang merupakan posisi pilihan. Point.x yang dikembalikan adalah posisi caretAwal dan Point.y adalah posisi caretAkhir.
getSelectionCount()Mengembalikan int yaitu jumlah karakter yang ada di dalam pilihan

Program berikut membuat input teks banyak baris, yang kemudian memilih kata "Indonesia", seperti pada gambar berikut.

package com.lyracc.pilihteks;
 
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.*;
 
public class PilihTeks {
 
    // Variabel-variabel widget kita deklarasikan sebagai
    // variabel privat
    private Display display;
    private Shell shell;
    private Text teks1;
 
    // Konstruktor kelas ini, untuk menginisialisasi semua widget
    PilihTeks() {
        // Membuat display dan shell baru
        display = new Display();
        shell = new Shell(display);
        shell.setText("Hello SWT");
        shell.setSize(200,250);
        shell.setLayout(new FillLayout());
 
        // Inisialisasi label
        teks1 = new Text(shell, SWT.BORDER | SWT.MULTI | 
                SWT.WRAP | SWT.V_SCROLL | SWT.H_SCROLL);
        teks1.setText("Kita bersama-sama di sini, untuk menegaskan " +
        		"kembali Indonesia tempat kita berdiri.");
        teks1.setSelection(52, 61);
    }
 
    // 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
        PilihTeks jendela = new PilihTeks();
        jendela.run();
    }
}

Menyisipkan dan Menambah Teks

Karakter bisa disisipkan ke dalam kontrol teks dengan metode insert() atau bisa ditambahkan dengan metode append(). Penyisipan dilakukan pada posisi kursor, sedangkan penambahan teks selalu dilakukan di akhir teks. Untuk menyisipkan teks pada posisi tertentu, pindahkan dahulu posisi caret ke posisi yang diinginkan dengan setSelection(), baru lakukan penyisipan.

MetodePenjelasan
insert(String s)Menyisipkan String s pada posisi caret.
append(String s)Menambahkan String s di akhir input teks
Jika sebagian teks sudah dipilih, maka teks yang dipilih akan dihapus, kemudian teks baru disisipkan di posisi tersebut.

Operasi Clipboard

Kontrol Text menyediakan fasilitas copy, cut, dan paste ke clipboard. Kontrol ini juga mendukung tombol shortcut (misalnya Ctrl-C, Ctrl-X, dan Ctrl-V) untuk melakukan operasi clipboard dari dan ke kontrol ini. Beberapa platform juga menyediakan menu konteks (yang keluar ketika kita mengklik kanan di kontrol tersebut) yang berisi operasi clipboard ini.

MetodePenjelasan
cut()Teks yang dipilih di-cut ke dalam clipboard
copy()Teks yang dipilih di-copy ke dalam clipboard
paste()Menyisipkan karakter dari dalam clipboard di posisi caret. Jika caret sudah memilih sebagian teks, teks dipilih akan dihapus dan diganti dengan teks dari clipboard

Membatasi Jumlah Karakter yang Bisa Diinput

Untuk beberapa aplikasi, kadang diperlukan batas jumlah karakter yang diinput oleh user. Misalnya, dalam aplikasi database, beberapa tabel hanya bisa menerima input sejumlah karakter saja. Untuk itu, aplikasi perlu membatasi jumlah karakter yang bisa diinput oleh user.

MetodePenjelasan
setTextLimit(int batas)Mengeset maksimum jumlah karakter yang bisa dimasukkan ke dalam input teks
getTextLimit()Mengembalikan int yang merupakan batas maksimum jumlah karakter yang bisa dimasukkan ke dalam input teks
Password dan Karakter Echo

Untuk membuat input teks yang disamarkan, seperti untuk field password, kita bisa menggunakan bit gaya SWT.PASSWORD. Ketika user mengetikkan karakter pada input teks ini, karakter yang diinput oleh user akan disamarkan dengan suatu karakter, misalnya (*) atau (.). Kita bisa mengeset karakter apa yang digunakan untuk menyamarkan inputnya. Karakter ini disebut karakter echo.

MetodePenjelasan
setEchoCharacter(char c)Mengeset karakter echo dengan karakter tertentu
getEchoCharacter()Mengembalikan char yang merupakan karakter echo dari input teks password
Bekerja Dengan Input Teks Banyak Baris

Input teks banyak baris memiliki fitur tambahan dibandingkan dengan input teks satu baris. Salah satunya, karena inputnya bisa terdiri dari beberapa baris, kita bisa mengeset bagaimana teks akan ditampilkan. Jika kita menggunakan SWT.WRAP, maka teks yang panjang akan otomatis dipotong sehingga akan ditampilkan dalam beberapa baris.

Kita juga bisa mengeset karakter apa yang digunakan sebagai pembatas baris. Setiap sistem operasi memiliki pembatas baris yang mungkin berbeda-beda. (Misalnya pada Windows "\n\r", pada Linux "\n", dan pada Macintosh "\r"). KIta bisa mengubah pembatas barisnya, akan tetapi mungkin aplikasi yang kita buat sulit bekerja lintas platform.

Variabel statik DELIMITER pada kelas Text digunakan untuk mengetahui pembatas baris pada suatu platform. Ketika kita membaca input teks dari user, sistem operasi akan otomatis menambahkan pembatas baris. Untuk itu kadang kita perlu mengetahui pembatas barisnya, sehingga input dari user bisa kita olah lebih tepat. Metode lain yang bisa digunakan adalah getLineDelimiter().

Menggulung Teks

Input teks banyak baris membutuhkan scroll bar baik horizontal dan vertikal. Kadang-kadang kita perlu menggulung layar secara otomatis (supaya user tidak perlu lagi menggulung layar sendiri, misalnya jika teks yang kita berikan sangat panjang dan kita hanya tertarik pada bagian akhir teks).

MetodePenjelasan
setTopIndex(int i)Menggulung layar sehingga baris ke-i ditampilkan di baris pertama input teks
getTopIndex()Mengembalikan int yang merupakan baris pertama input teks yang ditampilkan.
showSelection()Jika input teks berupa input teks banyak baris, dan pilihan tidak ditunjukkan, misalnya karena tersembunyi di bagian bawah teks yang panjang, setelah memanggil showSelection(), maka teks yang dipilih akan otomatis ditunjukkan, yaitu dengan menggeser scroll bar secara otomatis hingga pilihan terlihat

SisipanUkuran
pilihteks.zip1.48 KB