Dialog memerankan peran yang penting dalam aplikasi berbasis desktop. Interaksi antara user dengan aplikasi terkadang tidak berjalan dengan baik karena user memberikan aksi yang tidak valid kepada aplikasi. Ketika hal tersebut terjadi, aplikasi harus memberitahukan kepada user apa yang telah terjadi dan bagaimana seharusnya user memperbaikinya. Model interaksi seperti ini tepat dilaksanakan menggunakan dialog.
Skenario lain adalah ketika aplikasi memerlukan input dari user agar aplikasi bisa terus melaksanakan tugasnya, misalnya meminta konfirmasi apakah user yakin akan melaksanakan sebuah aksi penting terhadap aplikasi seperti delete, update atau add data.
Dialog juga memberikan pembatasan kepada user, sebelum dialog selesai diproses, user tidak akan bisa berinteraksi dengan bagian aplikasi lainya. Dialog mencegah hal ini terjadi dengan memastikan bahwa jendela yang bisa diaktifkan hanyalah jendela dialog, sedangkan jendela aplikasi yang lain tidak dapat diaktifkan selama jendela dialog masih aktif.
Aplikasi sangat sering menggunakan dialog untuk berinteraksi dengan user, tetapi jenis interaksinya selalu seragam dan berulangulang. Swing menyediakan dialog yang didesign untuk keperluan yang sering muncul dalam aplikasi, seperti JOptionPane dan JFileChooser. Swing juga menyediakan class JDialog jika kita ingin membuat dialog custom sesuai keinginan kita.
Membuat pre-defined dialog dengan JOptionPane
JOptionPane menyediakan beberapa dialog yang siap pakai dan sering digunakan dalam aplikasi. JOptionPane sangat memudahkan kita dalam meminta user suatu input tertentu atau memberitahu user apa yang terjadi dalam aplikasi.
JOptionPane mempunyai banyak static method untuk menampilkan popup dialog dengan mudah. Terdapat empat method utama yang dapat kita gunakan sebagai landasan membuat dialog. Keempat method tersebut secara rinci digambarkan dalam table berikut ini:
Table method JOptionPane
Swing juga menyediakan method showInternalXXX yang digunakan jika kita bekerja dengan JInternalFrame.
Parameter dari keempat method tersebut mengikuti pola yang konsisten. Terurut dari kiri ke kanan, berikut ini parameterparameter yang bisa diterima oleh method-method dalam class
JOptionPane:
1. parentComponent
Mendefisikan komponen yang akan menjadi parent dari dialog box ini. Frame dari parent component tersebut akan menjadi frame dari dialog dan dialog akan ditampilkan di tengah-tengah parent component. Jika nilai dari parentComponent diset null, maka dialog akan menggunakan frame default dan dialog akan diletakkan ditengah-tengah layar monitor (tergantung L&F).
2. message
Pesan yang deskriptif menerangkan perihal dialog yang muncul. Pada umumnya message berupa pesan String yang akan diletakkan dalam dialog, namun jenis object lain juga diijinkan digunakan sebagai message. Object-object yang diijinkan akan diperlakukan berbeda, object-object tersebut antara lain
a) Object[]
Setiap object akan ditampilkan dalam dialog berurut dari atas ke bawah. Aturan ini berlaku rekursif untuk semua object didalam array.
b) Component
Jika object yang dimasukkan sebagai message bertipe Component, maka Component tersebut akan ditampilkan ditengah-tengah dialog.
c) Icon
Icon akan dimasukkan ke dalam sebuah JLabel kemudian
ditampilkan di sebelah kiri dari dialog.
d) others
Object lainya akan ditampilkan dalam dialog dengan mengambil nilai kembalian dari method toString dari setiap object.
3. messageType
Mendefisikan jenis dari pesan. Pada umumnya memberikan custom icon untuk setiap jenis pesan. Setiap L&F manager akan memperlakukan setiap jenis pesan dengan berbeda, namun perbedaanya tidak akan terlalu mencolok. Pilihan yang Mungkin dan icon yang mewakilinya adalah:
a) ERROR_MESSAGE
b) INFORMATION_MESSAGE
c) WARNING_MESSAGE
d) PLAIN_MESSAGE (tanpa icon)
4. optionType
Mendefisikan tombol-tombol yang akan ditampilkan di bagian bawah dari dialog.
Mendefisikan tombol-tombol yang akan ditampilkan di bagian bawah dari dialog.
a) DEFAULT_OPTION
b) YES_NO_OPTION
c) YES_NO_CANCEL_OPTION
d) OK_CANCEL_OPTION
Namun kita tidak dibatasi untuk hanya menggunakan empat jenis set tombol diatas, kita dapat mendefisikan tombol-tombol yang akan muncul sesuai kebutuhan.
5. options
Deskripsi yang lebih detail dari set tombol yang digunakan dialog. Nilai yang lazim adalah sebuah array String berisi text yang akan ditampilkan di setiap tombol. Namun Object lain juga dapat diterima, antara lain:
a) Component
Component akan diletakkan dalam baris tombol secara langsung.
b) Icon
Sebuah JButton akan dibuat dan didekorasi dengan icon ini.
c) other
Object dengan tipe selainnya akan dirubah ke dalam bentuk String dengan mengambil nilai kembalian dari method toString dari object tersebut.
6. icon
Icon yang digunakan untuk mendekorasi dialog. Jika icon ini didefinisikan maka akan menimpa icon default yang didefinisikan oleh messageType.
7. title
Judul dari dialog yang diletakkan di bagian paling atas dari dialog.
8. initialValue
Nilai default dari pilihan yang mungkin ada dalam dialog. Untuk lebih jelasnya, berikut ini beberapa contoh kode penggunaan JOptionPane beserta hasil tampilanya :
JOptionPane.showMessageDialog(null,
"Simple plain dialog","Plain dialig",
JOptionPane.PLAIN_MESSAGE);
Tampilan dialog sederhana
JOptionPane.showMessageDialog(null,
"Your action was succeed, “ +
“you can proceed to next assigment",
"Information dialog",
JOptionPane.INFORMATION_MESSAGE);
"Your action was succeed, “ +
“you can proceed to next assigment",
"Information dialog",
JOptionPane.INFORMATION_MESSAGE);
Tampilan dialog dengan tipe dialog Information
JOptionPane.showMessageDialog(null,
"You neet to be sure to do this action!",
"Dialog Peringatan", JOptionPane.WARNING_MESSAGE);
Dialog dengan tipe Warning
JOptionPane.showMessageDialog(null,
"Something goes wrong and generate error message",
"Error Dialog", JOptionPane.ERROR_MESSAGE);
Dialog dengan tipe Error
JOptionPane.showConfirmDialog(null,
"Choose yes or no","Confirmation Dialog",
JOptionPane.YES_NO_OPTION,
JoptionPane.WARNING_MESSAGE);
Option dialog dengan tipe Information dan pilihan YES_NO
JOptionPane.showConfirmDialog(null,
"Choose yes, no or cancel","Confirmation Dialog",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.PLAIN_MESSAGE);
JOptionPane.showInputDialog(null,
"Input your name here","Input Dialog",
JOptionPane.INFORMATION_MESSAGE);
"Input your name here","Input Dialog",
JOptionPane.INFORMATION_MESSAGE);
InputDialog dengan tipe message Information
String[] options = {"Apple","Mango","Grape","Guava"};
JOptionPane.showInputDialog(null,
"Choose this one Option","Input dialog",
JOptionPane.WARNING_MESSAGE,null,options,"Apple");
InputDialog dialog dengan tipe Warning, Options berupa array of
String dan initialValue = 'Apple'
String dan initialValue = 'Apple'
Membuat JFileChooser
JFileChooser digunakan untuk bernavigasi dalam file system, kemudian memilih satu atau lebih file atau folder dari list file dan folder. JFileChooser pada dasarnya adalah pengembangan dari dialog yang dapat digunakan untuk memilih file. JFileChooser dapat digunakan sebagai dialog untuk menyimpan file atau untuk membuka file.
JFileChooser digunakan untuk bernavigasi dalam file system, kemudian memilih satu atau lebih file atau folder dari list file dan folder. JFileChooser pada dasarnya adalah pengembangan dari dialog yang dapat digunakan untuk memilih file. JFileChooser dapat digunakan sebagai dialog untuk menyimpan file atau untuk membuka file.
JFileChooser hanya memberikan fasilitas untuk memilih file atau folder, sedangkan mekanisme untuk menyimpan atau membuka file dilakukan sendiri menggunakan library I/O.
Aplikasi berikut ini adalah contoh penggunaan JFileChooser untuk membuka dan menyimpan file.
Contoh program menggunakan JFileChooser
Tampilan JFileChooser ketika tombol open ditekan adalah seperti di bawah ini :
Tampilan JFileChooser
Untuk membuat aplikasi diatas lakukan langkah-langkah berikut ini :
1. Buat class JFrame Form baru, beri nama Chooser.java
2. Masukkan dua buah JTextField : txtOpen dan txtSave, dua buah
Jbutton : btnOpen dan btn save, sebuah JLabel : lblStatus.
Sesuaikan penataan komponen sesuai dengan gambar diatas.
Sesuaikan penataan komponen sesuai dengan gambar diatas.
3. Tambahkan sebuah object JFileChooser sebagai field dari class Chooser, beri nama chooser.
public class Chooser{
JFileChooser chooser = new JFileChooser();
//kode lain di sini
}
4. FileNameExtentionFilter digunakan sebagai file filter dalam JFileChooser. Metode filteringnya adalah mencocokkan ekstensi file dalam file system dengan ekstensi yang ada dalam FileNameExtentionFilter. Contoh kode di bawah ini akan menyebabkan JFileChooser mempunyai pilihan “JPEG File”, dan jika pilihan tersebut dipilih, maka file dengan ekstensi “jpg”, “jpeg”,”JPG” atau“JPEG” saja yang akan ditampilkan oleh JFileChooser.
FileNameExtensionFilter JPEGFilter =
new FileNameExtensionFilter(
"JPEG File","jpg","jpeg",”JPG”,”JPEG”);
chooser.addChoosableFileFilter(JPEGFilter);
5. Set direktori yang akan dituju oleh JFileChooser. Untuk mengetahui dimana direktori aktif aplikasi, kita bisa menggunakan system property “user.dir”. Kode berikut ini akan menyebabkan JFileChooser dibuka pada direktori aktif aplikasi :
String dir = System.getProperty("user.dir");
chooser.setCurrentDirectory(new File(dir));
6. Menghandle event penekanan tombol btnSave. Ketika tombol
btnSave ditekan, chooser akan menampilkan dialog save file,
kemudian mengambil nama file yang dipilih dan
menampilkannya dalam txtSave, serta menampilkanya dalam
lblStatus. Berikut ini kodenya :
private void btnSaveActionPerformed(ActionEvent evt) {
// TODO add your handling code here:
int ret = chooser.showSaveDialog(this);
if(ret == JFileChooser.APPROVE_OPTION){
File f = chooser.getSelectedFile();
lblStatus.setText("Status : saving file" +
f.getAbsolutePath());
txtSave.setText(f.getAbsolutePath());
}
}
// TODO add your handling code here:
int ret = chooser.showSaveDialog(this);
if(ret == JFileChooser.APPROVE_OPTION){
File f = chooser.getSelectedFile();
lblStatus.setText("Status : saving file" +
f.getAbsolutePath());
txtSave.setText(f.getAbsolutePath());
}
}
7. Menghandle penekanan tombol btnOpen. Kode untuk menangani penekanan tombol btnOpen mirip dengan kode untuk menangani penenakan tombol btnSave, perbedaanya adalah btnOpen akan menampilkan dialog open file, berikit ini kodenya :
private void btnBrowseActionPerformed(ActionEvent evt){
// TODO add your handling code here:
int ret = chooser.showOpenDialog(this);
if(ret == JFileChooser.APPROVE_OPTION){
File f = chooser.getSelectedFile();
lblStatus.setText("Status : opening file" +
f.getAbsolutePath());
txtOpen.setText(f.getAbsolutePath());
}
}
8. Compile dan jalankan aplikasinya dengan menekan tombol SHIFT + F6
Bekerja dengan JOptionPane dan dengan JFileChooser sangat sederhana. Keduanya menggunakan modal dialog untuk mengambil input dari user. Modal dialog akan mencegah user mengakses bagian aplikasi lain sebelum dialog ditutup, atau dalam hal ini memutuskan pilihan apa yang diambil oleh user.
Masih banyak lagi komponen swing yang disediakan oleh JDK, anda tinggal melanjutkan membaca dari referensi yang diberikan modul ini pada bagian akhir untuk melanjutkan pembelajaran anda tentang Java desktop.
Tidak ada komentar:
Posting Komentar