Java Applet Temelleri : Java Applet JFileChooser

advertisement
Java Applet JFileChooser
Java Applet JFileChooser
Java swing arayüzlerinden - dosya sistemine erişimi sağlayan JFileChooser
sınıfının detayları
JFileChooser jfc = new JFileChooser("/home/orhan/Downloads");
jfc.showOpenDialog(null);
Bundan sonra ihtiyacımız olan kullanıcının hangi seçeneği seçtiğini öğrenmek. Kullanıcı herhangi bir dosyayı seçebilir veya işlemi
iptal edebilir. Diyalogdan kullanıcı çıktısını şu şekilde alıyoruz :
JFileChooser.APPROVE_OPTION
JFileChooser.CANCEL_OPTION
JFileChooser.ERROR_OPTION
//seçim onaylandı
//seçim iptal edildi
//işlem sırasında hata oluştu
Şimdi kullanıcının seçmiş olduğu dosya ismini JFileChooser sınıfından almayı öğrenelim.
jfc.setMultiSelectionEnabled(true);
int kullaniciSecimi = jfc.showOpenDialog(null);
if (kullaniciSecimi == JFileChooser.APPROVE_OPTION) {
for(File f : jfc.getSelectedFiles()) {
System.out.println(f);
}
}
Son olarak seçimimiza filtre eklemeyi öğrenelim. Örneğin sadece jpg uzantılı dosyaların seçilebilmesini istiyorsak :
www.dijitalders.com
Java Applet JFileChooser
1
Java Applet JFileChooser
import
import
import
import
import
javax.swing.*;
java.awt.*;
java.awt.event.*;
java.beans.*;
java.io.*;
public class Test extends JFrame {
JFileChooser chooser = new JFileChooser();
ImagePreviewer previewer = new ImagePreviewer();
PreviewPanel previewPanel = new PreviewPanel();
class PreviewPanel extends JPanel {
public PreviewPanel() {
JLabel label = new JLabel("Resim Önizleme", SwingConstants.CENTER);
setPreferredSize(new Dimension(150,));
setBorder(BorderFactory.createEtchedBorder());
setLayout(new BorderLayout());
label.setBorder(BorderFactory.createEtchedBorder());
add(label, BorderLayout.NORTH);
add(previewer, BorderLayout.CENTER);
}
}
public Test() {
super("Image Previewer Accessory");
Container contentPane = getContentPane();
JButton button = new JButton("Select A File");
contentPane.setLayout(new FlowLayout());
contentPane.add(button);
chooser.setAccessory(previewPanel);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int state = chooser.showOpenDialog(null);
File file = chooser.getSelectedFile();
String s = "CANCELED";
if(file != null &&
state == JFileChooser.APPROVE_OPTION) {
s = "File Selected: " + file.getPath();
}
JOptionPane.showMessageDialog(null, s);
}
});
chooser.addPropertyChangeListener(
new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent e) {
if(e.getPropertyName().equals(
JFileChooser.SELECTED_FILE_CHANGED_PROPERTY)) {
File f = (File)e.getNewValue();
String s = f.getPath(), suffix = null;
int i = s.lastIndexOf('.');
if(i > && i < s.length() - 1)
suffix = s.substring(i+1).toLowerCase();
if(suffix.equals("gif") ||
suffix.equals("jpg"))
previewer.configure(f);
}
}
});
}
public static void main(String a[]) {
www.dijitalders.com
Java Applet JFileChooser
2
Java Applet JFileChooser
JFrame f = new Test();
f.setBounds(300, 300, 300, 75);
f.setVisible(true);
f.setDefaultCloseOperation(
WindowConstants.DISPOSE_ON_CLOSE);
f.addWindowListener(new WindowAdapter() {
public void windowClosed(WindowEvent e) {
System.exit();
}
});
}
}
class ImagePreviewer extends JLabel {
public void configure(File f) {
Dimension size = getSize();
Insets insets = getInsets();
ImageIcon icon = new ImageIcon(f.getPath());
setIcon(new ImageIcon(icon.getImage().getScaledInstance(
size.width - insets.left - insets.right,
size.height - insets.top - insets.bottom,
Image.SCALE_SMOOTH)));
}
}
Yukardaki kodlarda PreviewPanel nesnesi ile JFileChooserin sağ tarafında bir panel nesnesi oluşturuyoruz ve bu nesneyi
chooser.setAccessory(previewPanel); diyerek JFileChoosere eklemiş oluyoruz. ImagePreviewer adında bir JLabel nesnesi
oluşturuo içerisine tanımladığımız ImageIconu biraz önce oluşturduğumuz JPanel (previewPanel) nesnesi üzerine ekliyoruz.
chooser.addPropertyChangeListener tetikleyicisi ile de herhangi bir seçim durumunda seçili nesneye ait resmin ön izlemesinin
JPanel içerisindeki JLabelde yer almasını sağlıyoruz.
Kaynak
http://www.informit.com/articles/article.aspx?p=32060
http://orhanbalci.net/tr/?p=727#respond
www.dijitalders.com
Java Applet JFileChooser
3
Download