الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

بدأه Muhammed Magdy في 1 نوفمبر 2014 · 9 رد · 1,546 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

 

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

 

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

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

 

مثال ال Disk Management

 

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

#2
اقتباس

 

عمل واجهة رسومية لكل ال 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: 62279344128

Drive Letter: D:\
	Type: Disque local
	Total space: 115299315712
	Free space: 38197481472

Drive Letter: E:\
	Type: Disque local
	Total space: 237961736192
	Free space: 135190425600

Drive Letter: F:\
	Type: Lecteur de CD
	Total space: 0
	Free space: 0

Drive Letter: G:\
	Type: Disque amovible
	Total space: 3896442880
	Free space: 3895771136
اقتباس

 

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

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

تم تعديل هذه المشاركة بواسطة Snack3r في 1 نوفمبر 2014 في 12:07

1
#3
Snack3r كتب:

أظنك تقصد الـ 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: 62279344128

Drive Letter: D:\
	Type: Disque local
	Total space: 115299315712
	Free space: 38197481472

Drive Letter: E:\
	Type: Disque local
	Total space: 237961736192
	Free space: 135190425600

Drive Letter: F:\
	Type: Lecteur de CD
	Total space: 0
	Free space: 0

Drive Letter: G:\
	Type: Disque amovible
	Total space: 3896442880
	Free space: 3895771136

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

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

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

#4
اقتباس

 

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

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

 

اقتباس

 

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

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

تم تعديل هذه المشاركة بواسطة Snack3r في 1 نوفمبر 2014 في 16:39

1
#5
Snack3r كتب:

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

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

1
#6
اقتباس

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

 

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

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

#7
Snack3r كتب:

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

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

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

#8
اقتباس

نعم مع ال 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 نوفمبر 2014 في 18:59

1
#9
Snack3r كتب:

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

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

 

 

بالتوفيق.

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

#10
اقتباس

 

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

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

 

اقتباس

 

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

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

تم تعديل هذه المشاركة بواسطة Snack3r في 1 نوفمبر 2014 في 20:12

1

مواضيع مشابهة