Java Swing الكلاس JFileChooser
مقدمة Swing - الكلاس JFileChooser
الكلاس JFileChooser
يسمى File Chooser و يستخدم للحصول على نافذة جاهزة مخصصة لإختيار الملفات (File Chooser Dialog).
إفتراضياً الـ File Chooser يتيح للمستخدم إختيار أي نوع من الملفات الموجودة مهما كان إمتدادها.
في حال أردت إجبار المستخدم على إختيار أنواع محددة من الملفات, يمكنك تحديد إمتداد الملفات التي تريد جعله قادراً على رؤيتها بداخل File Chooser.
لا تقلق ستفهم كل شيء لاحقاً من الأمثلة.
بنا Swing - الكلاس JFileChooser
public class JFileChooser extends JComponent implements Accessible
كونستركتورات الكلاس JFileChooser
الجدول التالي يحتوي أهم الكونستركتورات الموجودة في الكلاس JFileChooser
.
الكونستركتور مع تعريفه | |
---|---|
public JFileChooser()
ينشئ كائن من الكلاس JFileChooser يمثل File Chooser Dialog يتيح للمستخدم إختيار أي نوع من الملفات.في حال كان المستخدم يستخدم نظام Windows أو Linux فإن المجلد الإفتراضي الذي سيكون مفتوحاً فيه هو المجلد My Documents. |
|
public JFileChooser(String currentDirectoryPath)
ينشئ كائن من الكلاس JFileChooser يمثل File Chooser Dialog يتيح للمستخدم إختيار أي نوع من الملفات مع تحديد المجلد الإفتراضي الذي سيكون مفتوحاً فيه.مكان الباراميتر currentDirectoryPath نضع نص يمثل مسار المجلد الذي سيكون مفتوحاً عندما يتم إظهاره.أو نضع القيمة null لجعله يفتح المجلد الإفتراض للمستخدم في النظام. |
|
public JFileChooser(File currentDirectory)
ينشئ كائن من الكلاس JFileChooser يمثل File Chooser Dialog يتيح للمستخدم إختيار أي نوع من الملفات مع تحديد المجلد الإفتراضي الذي سيكون مفتوحاً فيه.مكان الباراميتر currentDirectory نضع كائن من الكلاس File يمثل مسار المجلد الذي سيكون مفتوحاً عندما يتم إظهاره.أو نضع القيمة null لجعله يفتح المجلد الإفتراض للمستخدم في النظام. |
دوال الكلاس JFileChooser
الجدول التالي يحتوي على أهم الدوال الموجودة في الكلاس JFileChooser
.
الدالة مع تعريفها | |
---|---|
public int showDialog(Component parent, String approveButtonText)
تظهر FIle Chooser Dialog يحتوي على زرين. الزر الأول هو Cancel و الزر الثاني أنت تحدد النص الذي سيظهر عليه.
عند إختفاء الـ File Chooser Dialog فإنه يرجع إحدى القيم التالية:
|
|
public int showOpenDialog(Component parent)
تظهر FIle Chooser Dialog يحتوي على زر Cancel و زر Open File.بمعنى آخر, تظهر نافذة منبثقة أمام المستخدم تطلب منه تحديد الملف الذي يريد فتحه. مكان الباراميتر component نضع الـ Frame التي نريده أن يظهر بداخلها. أو نضع null لجعله يظهر في وسط شاشة المستخدم.عند إختفاء الـ File Chooser Dialog فإنه يرجع إحدى القيم التالية:
|
|
public int showSaveDialog(Component parent)
تظهر FIle Chooser Dialog يحتوي على زر Cancel و زر Save File.بمعنى آخر, تظهر نافذة منبثقة أمام المستخدم تطلب منه تحديد المكان الذي يريد حفظ الملف فيه. مكان الباراميتر component نضع الـ Frame التي نريده أن يظهر بداخلها. أو نضع null لجعله يظهر في وسط شاشة المستخدم.عند إختفاء الـ File Chooser Dialog فإنه يرجع إحدى القيم التالية:
|
|
public void setFileSelectionMode(int mode)
تحدد ما الذي يستطيع المستخدم إختياره ( ملفات, مجلدات, ملفات و مجلدات ), علماً أنه إفتراضياً يستطيع فقط إختيار ملفات.مكان الباراميتر mode نضع إحدى ثواتب الكلاس JFileChooser المخصصة لتحديد ما الذي يستطيع المستخدم إختياره:
ترمي الإستثناء IllegalArgumentException في حال لم يتم تحديد الـ Selection Mode بواسطة الثوابت المخصصة لذلك. |
|
public void setFileFilter(FileFilter filter)
تحدد إمتداد الملفات ( Files Extension ) التي يستطيع المستخدم إختيارها.مكان الباراميتر FileFilter نضع كائن من الكلاس FileNameExtensionFilter و الذي بدوره يرث من الكلاس FileFilter .الكلاس FileNameExtensionFilter يسمح لنا بتحديد إمتداد الملفات التي يمكن للمسخدم إختيارها. |
طريقة إظهار نافذة منبثقة JFileChooser
لإختيار ملف
المثال التالي يعلمك طريقة إظهار File Chooser Dialog و معرفة إذا تم النقر على الزر Open أم لا.
مثال يعلمك طريقة إظهار File Chooser Dialog و معرفة إذا تم النقر على الزر Open أم لا.
import javax.swing.JFileChooser; public class JFIleChooserDemo { public static void main(String[] args) { // chooser إسمه JColorChooser هنا قمنا بإنشاء كائن من الكلاس JFileChooser chooser = new JFileChooser(); // كنافذة لإختيار ملف في وسط شاشة المستخدم chooser هنا قمنا بإظهار الكائن // returnedValue و تخزين القيمة التي سيرجعها عندما يتم إغلاقه في المتغير int returnedValue = chooser.showOpenDialog(null); if(returnedValue == JFileChooser.APPROVE_OPTION) { // هنا من المفترض أن تضع الأوامر التي سيتم تنفيذها بعد إختيار الملف أو المجلد } } }
•ستظهر لك النافذة التالية عند التشغيل.
طريقة إظهار JFileChooser
لإختيار ملف من الجهاز ثم عرض محتواه في JTextArea
المثال التالي يعلمك طريقة إظهار File Chooser Dialog لقراءة محتوى أي ملف.
هنا سيقوم المستخدم بإختيار أي ملف من جهازه بواسطة File Chooser Dialog, بعدها سنعرض له محتوى الملف الذي إختاره في Text Area.
مثال يعلمك طريقة إظهار File Chooser Dialog لقراءة محتوى أي ملف
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JFileChooser; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JScrollPane; import javax.swing.JTextArea; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import javax.swing.JOptionPane; public class Main { public static void main(String[] args) { JFrame frame = new JFrame("JFileChooser demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس frame.setSize(520, 400); // هنا قمنا بتحديد حجم النافذة. عرضها 520 و طولها 400 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج // هنا قمنا بتعريف كل شيء وضعناه في شريط القوائم JMenuBar menuBar = new JMenuBar(); JMenu file = new JMenu("File"); JMenuItem open = new JMenuItem("Open File"); // file في القائمة open في شريط القائمة. ثم وضعنا العنصر file هنا وضعنا قائمة الـ menuBar.add(file); file.add(open); // عند الحاجة Scroll Bar حتى يظهر Scroll Pane و وضعناه بداخل Text Area هنا قمنا بتعريف JTextArea textArea = new JTextArea(); JScrollPane textAreaScroller = new JScrollPane(textArea); // frame في الـ textAreaScroller و الـ menuBar هنا قمنا بوضع الـ frame.setJMenuBar(menuBar); frame.add(textAreaScroller); // File Chooser Dialog و الذي سنستخدمه لإظهار JFileChooser هنا قمنا بتعريف كائن من الكلاس JFileChooser chooser = new JFileChooser(); // مرئية frame هنا جعلنا الـ frame.setVisible(true); // Open هنا قمنا بوضع الأوامر التي نريد تنفيذها عند النقر على الـ open.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // frame فوق الـ Color Chooser Dialog سيتم إظهار الـ int returnedValue = chooser.showOpenDialog(frame); // Open ففي حال قام المستخدم بإختيار ملف ثم نقر على if(returnedValue == JFileChooser.APPROVE_OPTION) { // سيتم حفظ مساره File selectedFile = chooser.getSelectedFile(); String filepath = selectedFile.getPath(); try { // ثم قراءة محتواه سطراً سطراً BufferedReader br = new BufferedReader(new FileReader(filepath)); String line = ""; String text = ""; while( (line=br.readLine()) != null ) text += line + "\n"; // ثم إغلاق الإتصال مع الملف textArea في الأخير سيتم وضعه كنص في الـ textArea.setText(text); br.close(); } catch(IOException ioe) { // Option Pane في حال حدث خطأ سيتم عرضه في JOptionPane.showMessageDialog(null, ioe.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); } } } }); } }
•ستظهر لك النافذة التالية عند التشغيل.
•أنقر على الزر Open File لإظهار الـ Color Chooser Dialog.
•إختر أي ملف نصي من جهازك ثم أنقر على الزر Open.
•لاحظ أنه سيقوم بإخفاء الـ Color Chooser Dialog و عرض نص الملف الذي إخترته في الـ Text Area.
طريقة تحديد أنواع الملفات التي يمكن للمستخدم رؤيتها و إختيارها في الـ JFileChooser
المثال التالي يعلمك طريقة تحديد أنواع الملفات التي يمكن للمستخدم رؤيتها و إختيارها في الـ File Chooser Dialog.
مثال يشرح طريقة تحديد أنواع الملفات التي يمكن للمستخدم رؤيتها و إختيارها في الـ File Chooser Dialog.
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JFileChooser; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.filechooser.FileNameExtensionFilter; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import javax.swing.JOptionPane; public class Main { public static void main(String[] args) { JFrame frame = new JFrame("JFileChooser demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس frame.setSize(520, 400); // هنا قمنا بتحديد حجم النافذة. عرضها 520 و طولها 400 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج // هنا قمنا بتعريف كل شيء وضعناه في شريط القوائم JMenuBar menuBar = new JMenuBar(); JMenu file = new JMenu("File"); JMenuItem open = new JMenuItem("Open File"); // file في القائمة open في شريط القوائم. ثم وضعنا العنصر file هنا وضعنا قائمة الـ menuBar.add(file); file.add(open); // عند الحاجة Scroll Bar حتى يظهر Scroll Pane و وضعناه بداخل Text Area هنا قمنا بتعريف JTextArea textArea = new JTextArea(); JScrollPane textAreaScroller = new JScrollPane(textArea); // frame في الـ textAreaScroller و الـ menuBar هنا قمنا بوضع الـ frame.setJMenuBar(menuBar); frame.add(textAreaScroller); // File Chooser Dialog و الذي سنستخدمه لإظهار JFileChooser هنا قمنا بتعريف كائن من الكلاس JFileChooser chooser = new JFileChooser(); // File Chooser Dialog يمثل إمتداد الملفات التي نريدها أن تظهر في الـ FileNameExtensionFilter هنا قمنا بإنشاء كائن من الكلاس FileNameExtensionFilter filter = new FileNameExtensionFilter("text or java files", "txt", "java" ); chooser.setFileFilter(filter); // مرئية frame هنا جعلنا الـ frame.setVisible(true); // Open هنا قمنا بوضع الأوامر التي نريد تنفيذها عند النقر على الـ open.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // frame فوق الـ Color Chooser Dialog سيتم إظهار الـ int returnedValue = chooser.showOpenDialog(frame); // Open ففي حال قام المستخدم بإختيار ملف ثم نقر على if(returnedValue == JFileChooser.APPROVE_OPTION) { // سيتم حفظ مساره File selectedFile = chooser.getSelectedFile(); String filepath = selectedFile.getPath(); try { // ثم قراءة محتواه سطراً سطراً BufferedReader br = new BufferedReader(new FileReader(filepath)); String line = ""; String text = ""; while( (line=br.readLine()) != null ) text += line + "\n"; // ثم إغلاق الإتصال مع الملف textArea في الأخير سيتم وضعه كنص في الـ textArea.setText(text); br.close(); } catch(IOException ioe) { // Option Pane في حال حدث خطأ سيتم عرضه في JOptionPane.showMessageDialog(null, ioe.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); } } } }); } }
•ستظهر لك النافذة التالية عند التشغيل.
•أنقر على الزر Open File لإظهار الـ Color Chooser Dialog.
•لاحظ أنه يمكنك رؤية و إختيار الملفات التي إمتدادها .txt و .java
•بعد إختيار الملف أنقر على الزر Open.
•لاحظ أنه سيقوم بإخفاء الـ Color Chooser Dialog و عرض نص الملف الذي إخترته في الـ Text Area.
دورة تعلم الجافا Swing