• 0
Muhammed Magdy

التعامل مع ال Drivers في الجافا

سؤال

بسم الله الرحمن الرحيم

 

بناء على طلب الأخ Snack3r في فتح موضوع جديد بدل الموضوع السابق الخاص ب "إضافة ال Drivers على JFrame" ولأني أعتقد إنه موضوع متقدم

 

أحتاج مثالين للتعامل مع ال Drivers :

الأول عمل واجهة رسومية لكل ال Drivers الموجودة في الجهاز

 

مثال ال Disk Management

 

الثاني فرض إختيار  Driver "HDD, CD,DVD,USB, etc" في Browse

 

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

9 إجابة على هذا السؤال .

  • 0

 

عمل واجهة رسومية لكل ال Drivers الموجودة في الجهاز

مثال ال Disk Management

أظنك تقصد الـ partitions و ليس الـ drivers لأن المسؤول عن تسيير الأخيرة هو device manager و ليس disk management.

هذا المثال قد يكون بداية لما تريد فعله :

import java.io.File;import javax.swing.filechooser.FileSystemView;public class DrivesListingExample {    public static void main(String[] args) {        FileSystemView fsv = FileSystemView.getFileSystemView();        File[] drives = File.listRoots();        if (drives != null && drives.length > 0) {            for (File aDrive : drives) {                System.out.println("Drive Letter: " + aDrive);                System.out.println("\tType: " + fsv.getSystemTypeDescription(aDrive));                System.out.println("\tTotal space: " + aDrive.getTotalSpace());                System.out.println("\tFree space: " + aDrive.getFreeSpace());                System.out.println();            }        }    }}

و هذه مخرجات الكود عندي :

Drive Letter: C:\	Type: Disque local	Total space: 138705633280	Free space: 62279344128Drive Letter: D:\	Type: Disque local	Total space: 115299315712	Free space: 38197481472Drive Letter: E:\	Type: Disque local	Total space: 237961736192	Free space: 135190425600Drive Letter: F:\	Type: Lecteur de CD	Total space: 0	Free space: 0Drive Letter: G:\	Type: Disque amovible	Total space: 3896442880	Free space: 3895771136

 

الثاني فرض إختيار  Driver "HDD, CD,DVD,USB, etc" في Browse

لم أفهم ماذا تريد !

تم تعديل بواسطه Snack3r
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أظنك تقصد الـ partitions و ليس الـ drivers لأن المسؤول عن تسيير الأخيرة هو device manager و ليس disk management.

هذا المثال قد يكون بداية لما تريد فعله :

import java.io.File;import javax.swing.filechooser.FileSystemView;public class DrivesListingExample {    public static void main(String[] args) {        FileSystemView fsv = FileSystemView.getFileSystemView();        File[] drives = File.listRoots();        if (drives != null && drives.length > 0) {            for (File aDrive : drives) {                System.out.println("Drive Letter: " + aDrive);                System.out.println("\tType: " + fsv.getSystemTypeDescription(aDrive));                System.out.println("\tTotal space: " + aDrive.getTotalSpace());                System.out.println("\tFree space: " + aDrive.getFreeSpace());                System.out.println();            }        }    }}

و هذه مخرجات الكود عندي :

Drive Letter: C:\	Type: Disque local	Total space: 138705633280	Free space: 62279344128Drive Letter: D:\	Type: Disque local	Total space: 115299315712	Free space: 38197481472Drive Letter: E:\	Type: Disque local	Total space: 237961736192	Free space: 135190425600Drive Letter: F:\	Type: Lecteur de CD	Total space: 0	Free space: 0Drive Letter: G:\	Type: Disque amovible	Total space: 3896442880	Free space: 3895771136

لم أفهم ماذا تريد !

بالنسبة للمثال الأول هذة فقط معلومات عن الأقراص وليس للتحكم بها أو حتى بالواجهة الرسومية ، المثال غير مكتمل

بالنسبة للمثال الثاني أريد ال JFileChooser يفتح على الأقراص فقط، يعني FileFilter على الأقراص بس لا أعرف الصيغة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 

بالنسبة للمثال الأول هذة فقط معلومات عن الأقراص وليس للتحكم بها أو حتى بالواجهة الرسومية ، المثال غير مكتمل

هل تريدني أن أكتب لك برنامج مُكافئ لـ Disk Manager و أرفق لك الكود ؟

 

 

بالنسبة للمثال الثاني أريد ال JFileChooser يفتح على الأقراص فقط، يعني FileFilter على الأقراص بس لا أعرف الصيغة

استخدم JComboBox و املأها بالـ File.listRoots.

تم تعديل بواسطه Snack3r
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هل تريدني أن أكتب لك برنامج مُكافئ لـ Disk Manager و أرفق لك الكود ؟

لا تفهمني خطأ ، الأمثلة فقط للتعلم ولا أحب نظام ال Copy & Paste و الوجبات الجاهزة ولو كنت أريد لغة تلغي التفكير لتعلمت ال Visual Basic و إكتفيت بال Drag & Drop ، في الموضوع الأول أخبرتني بأن لا علاقة بال Drivers و ال JFrame ، أنا أريد مثال بسيط عن ال Driver في واجهة بسيطة ليس مثل Disk Manager بالضبط

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أنا أريد مثال بسيط عن ال Driver في واجهة بسيطة

 

أوكي، ما هي المعلومات المتبقية التي تريد الحصول عليها ؟

و هل مشكلتك هي مع إظهار البيانات في JTable مثلا أم ماذا ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أوكي، ما هي المعلومات المتبقية التي تريد الحصول عليها ؟

و هل مشكلتك هي مع إظهار البيانات في JTable مثلا أم ماذا ؟

نعم مع ال JTable ، و سؤال آخر هل يمكن عمل Jbuttun و إضافة حدث ضغط ، مثال عند إختيار Driver والضغط على الزر يعمل Format ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

نعم مع ال JTable

 

هذا مثال بسيط باستخدام الـ JTable :

import java.awt.Container;import java.awt.Dimension;import java.awt.FlowLayout;import java.io.File;import javax.swing.JDialog;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.filechooser.FileSystemView;public class DrivesListingExample extends JDialog {    private Container contenu;    private JPanel panel;    private final String[] columnNames = {"Drive Letter", "Type", "Total space", "Free space"};    private String[][] data;    private JTable table;    private JScrollPane js;    public DrivesListingExample() {        setTitle("Disk Manager");        setDefaultCloseOperation(DISPOSE_ON_CLOSE);        panel = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 10));        setDrivesInformation();        table = new JTable(data, columnNames);        js = new JScrollPane(table);        js.setPreferredSize(new Dimension(500, 210));        panel.add(js);        contenu = this.getContentPane();        contenu.add(panel);        pack();        setLocationRelativeTo(null);    }    public void setDrivesInformation() {        FileSystemView fsv = FileSystemView.getFileSystemView();        File[] drives = File.listRoots();        if (drives != null && drives.length > 0) {            data = new String[drives.length][columnNames.length];            int count = 0;            for (File aDrive : drives) {                data[count][0] = aDrive.toString();                data[count][1] = fsv.getSystemTypeDescription(aDrive);                data[count][2] = Long.toString(aDrive.getTotalSpace());                data[count][3] = Long.toString(aDrive.getFreeSpace());                count++;            }        } else {            throw new UnsupportedOperationException("Not supported !");        }    }    public static void main(String[] args) {        new DrivesListingExample().setVisible(true);    }}

و هذه صورة الواجهة :

post-219439-0-89084800-1414857395_thumb.

 

 

هل يمكن عمل Jbuttun و إضافة حدث ضغط ، مثال عند إختيار Driver والضغط على الزر يعمل Format ؟

 

نعم ! قم بعمل implements للواجهة ActionListener و عرف الحدث داخل الدالة actionPerformed.

 

لكن أخي الكريم، إذا كنت لم تدرس بعد Swing فأنصحك بتعلمها بعيداً عن هذا النوع من الأمثلة لأن المشكلة هنا ليست في Swing و إنما في التعامل مع الأقراص الصلبة و الـ drivers.

لو كنت مكانك لاخترت لغة أكثر مرونة في التعامل مع الـ hardware كالسي++ مثلا.

 

 

بالتوفيق.

تم تعديل بواسطه Snack3r
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لكن أخي الكريم، إذا كنت لم تدرس بعد Swing فأنصحك بتعلمها بعيداً عن هذا النوع من الأمثلة لأن المشكلة هنا ليست في Swing و إنما في التعامل مع الأقراص الصلبة و الـ drivers.

لو كنت مكانك لاخترت لغة أكثر مرونة في التعامل مع الـ hardware كالسي++ مثلا.

 

 

بالتوفيق.

الصراحة كنت أفكر في تعلم لغة ال C أولاً ولكن المشكلة التي واجهتني هي المحتوى العربي قليل جداً ولا يصل حتى إلى مبادئ تصميم الواجهات ! ولذلك بدأت ب Java ما رأيك أكمل ماتبقى أم أنتقل إلى C مباشرة ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 

الصراحة كنت أفكر في تعلم لغة ال C أولاً ولكن المشكلة التي واجهتني هي المحتوى العربي قليل جداً ولا يصل حتى إلى مبادئ تصميم الواجهات

إن كنت تفكر في برمجة برنامج متقدم مثل Disk Manager فابتعد كثيراً و أكثر عن المحتوى العربي لأنه للأسف لا يُعالج في السي إلا قشور القشور، إن كنت تريد رؤية أكواد سي حقيقية فأنصحك بتحميل JDBC SQLite للجافا الذي تمت برمجة بعض أجزاءه بالسي و ستلاحظ الفرق الشاسع بين السي كلغة برمجة و ما يوجد منها في المحتوى العربي.

 

 

ما رأيك أكمل ماتبقى أم أنتقل إلى C مباشرة ؟

أعتقد أن الجافا يُمكنها برمجة برنامج مماثل و لكن السي تبقى الأفضل بطبيعة الحال.

تم تعديل بواسطه Snack3r
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .