Manipulasi JFileChooser (Buat Gambar)
salah satu yang paling menyebalkan dalam Swing adalah JFileChooser yang gak native, alias gak seperti aplikasi2 lainnya yang menggunakan bahasa pemrograman yang native seperti Delphi, VB, Visual… dan lain sebagainya.
untuk lebih jelas coba liat ini adalah JFileChooser :
sedangkan dibawah ini adalah yang bukan JFileChooser :
salah satu yang menjadi perbedaan JFileChooser dan FileChooser yang lainnya adalah kemampuan eksplorer OS tidak dimili oleh JFileChooser, semisal kita tidak bisa menampilkan gambar secara thumnail.
nah jadi sekarang kita akan membuat atau dengan kata lain memanipulasi bentuk JFileChooser yang biasa menjadi gak seperti biasanya, hahahaha.
JFileChooser untuk Gambar
satuhal yang perlu diketahui, untuk membuat atau memanipulasi JFileChooser, kita tidak bisa memanipulasi objeknya, sehingga mau gak mau kita harus membuat subclass dari JFileChooser, baru kita manipulasi subclassnya.
import javax.swing.JFileChooser;
public class ImageChooser extends JFileChooser {
}
karena sekarang kita akan membuat JFileChooser untuk gambar, maka kita beri sebuah filter untuk menampilkan file gambarsaja. Jadi kita buat filter untuk gambar :
import java.io.File;
import javax.swing.filechooser.FileFilter;
public class ImageFilter extends FileFilter {@Override
public boolean accept(File f) {
if (f.isDirectory()) {
return true;
}
String name = f.getName().toUpperCase();
if (name.endsWith(”.JPG”) || name.endsWith(”.PNG”) || name.endsWith(”.GIF”) || name.endsWith(”.BMP”)) {
return true;
}
return false;
}@Override
public String getDescription() {
return “Image File (JPG, PNG, GIF, BMP)”;
}
}
sekarang set image filter tersebut ke image chooser :
import javax.swing.JFileChooser;
public class ImageChooser extends JFileChooser {
public ImageChooser() {
super();
setFileFilter(new ImageFilter());
}
}
setelah itu tambahkan accessory (accessory merupakan komponen yang akan ditampilkan di pinggir kanan JFileChooser) :
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;public class ImageChooser extends JFileChooser {
private JLabel labelImage;
public ImageChooser() {
super();
setFileFilter(new ImageFilter());labelImage = new JLabel(”", JLabel.CENTER);
JScrollPane pane = new JScrollPane(labelImage);
JPanel panel = new JPanel(new java.awt.BorderLayout());
panel.setPreferredSize(new java.awt.Dimension(300, 300));
panel.add(pane);setAccessory(panel);
}
}
setelah itu beri aksi untuk menampilkan gambar untuk file yang sendag dibuka :
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;public class ImageChooser extends JFileChooser {
private JLabel labelImage;
public ImageChooser() {
super();
setFileFilter(new ImageFilter());labelImage = new JLabel(”", JLabel.CENTER);
JScrollPane pane = new JScrollPane(labelImage);
JPanel panel = new JPanel(new java.awt.BorderLayout());
panel.setPreferredSize(new java.awt.Dimension(300, 300));
panel.add(pane);setAccessory(panel);
addPropertyChangeListener(JFileChooser.SELECTED_FILE_CHANGED_PROPERTY, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (getSelectedFile() != null) {
if (!getSelectedFile().isDirectory()) {
ImageIcon icon = new ImageIcon(getSelectedFile().getPath());
labelImage.setIcon(icon);
}
}
}
});}
}
setelah itu, gunakan ImageChooser diatas dalam aplikasi yang kita buat. dibawah ini adalah contoh Screenshoot penggunaan ImageChooser :
eit, awas jangan liat ceweknya, hahahahah
see you at next trix
Rock with Java!!!!!!

Itu gambarnya kok gak relevan sama topiknya ya? Sepertinya salah masukin gambar. Tp berguna bgt, kebetulan lg cari 2 item itu (file filter & thumbnail), eh langsung ketemu 2-2 nya disini. Thanks a lot!
haha, dulu emang bener cuma kayaknya ada yang error ma wordpressnya tapi yang gambarnya gak terlalu penting yang penting ilmunya
Wow, baru baca, coba, eh langsung berhasil!
Cuma perlu ditambahi resizing gambarnya biar yang tampil cuma thumbnail/gambar kecil aja.
Nice tutorial!