• 0
Muhammed Magdy

مشكلة في مثال القراءة من الملفات

سؤال

السلام عليكم ورحمة الله وبركاته


 


أحاول تطبيق مثال القراءة من الملفات ، المشكلة في هذا الجزء


 


FileReader01_zps59a23fac.png


 


الأكواد



import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileFilter;
import java.io.FileReader;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
import javax.swing.filechooser.FileNameExtensionFilter;

/**
*
* @author Muhammed_Pro
*/
public class FileChooser01 extends JFrame {

JPanel p;
JTextArea ta;

public FileChooser01() {
p = new JPanel(new BorderLayout());
JToolBar tb = new JToolBar();
JButton b = new JButton("Open");
b.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
JFileChooser fc = new JFileChooser();
FileNameExtensionFilter ff = new FileNameExtensionFilter(".txt", "txt");
fc.addChoosableFileFilter(ff);

int er = fc.showDialog(p, "Open file");
if (er == JFileChooser.APPROVE_OPTION)
File f = fc.getSelectedFile();
String text = ReadFile(f);
ta.setText(text);
}
});

ta = new JTextArea();
ta.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
tb.add(b);

JScrollPane sc = new JScrollPane();
sc.getViewport().add(ta);

p.add(sc);
p.add(ta);
p.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));

add(p);
add(tb, BorderLayout.NORTH);

setVisible(true);
setSize(400, 400);
setLocationRelativeTo(null);
setDefaultCloseOperation(3);
}

public String ReadFile(File f) {
StringBuffer fb;
String FileString, Line;
try {
FileReader fr = new FileReader(f);
BufferedReader brd = new BufferedReader(fr);

fb = new StringBuffer();
while ((Line = brd.readLine()) != null) {
fb.append(Line+System.getProperty("Line.seprator"));
}
fr.close();
FileString = fb.toString();
} catch (Exception e) {
return null;
}
return FileString;

}
}

0

شارك هذا الرد


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

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

  • 0

هذا مثال يؤدي المطلوب، كتبته لك، أرجو أن يُفيدك :)

import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.*;import javax.swing.*;public class ReadingTextFile extends JFrame implements ActionListener {    Container contenu;    JButton ouvrir;    JLabel chemin;    JTextArea text;    public ReadingTextFile(String titre) {        this.setTitle(titre);        this.setSize(500, 300);        this.setLocationRelativeTo(null);        this.setDefaultCloseOperation(EXIT_ON_CLOSE);        this.initComponents();    }    private void initComponents() {        contenu = this.getContentPane();        JPanel pan = new JPanel();        ouvrir = new JButton("Lecture");        ouvrir.addActionListener(this);        pan.add(ouvrir);        contenu.add(pan, BorderLayout.NORTH);        chemin = new JLabel("Aucun fichier selectionné");        chemin.setOpaque(true);        chemin.setBackground(Color.CYAN);        contenu.add(chemin, BorderLayout.SOUTH);        text = new JTextArea();        text.setEditable(false);        Font font = new Font("Courier New", Font.BOLD, 12);        text.setFont(font);        text.setBackground(Color.ORANGE);        JScrollPane js = new JScrollPane(text);        contenu.add(js, BorderLayout.CENTER);    }    private void ouvrirFichierEnLecture() {        JFileChooser choix = new JFileChooser();        int retour = choix.showOpenDialog(this);        if (retour == JFileChooser.APPROVE_OPTION) {            File f = new File(choix.getSelectedFile().getAbsolutePath());            lireFichier(f);            chemin.setText(choix.getSelectedFile().getAbsolutePath());        }    }    private void lireFichier(File nom) {        try {            FileReader fichier = new FileReader(nom);            BufferedReader buffer = new BufferedReader(fichier);            String ligne_lue = buffer.readLine();            StringBuilder texte = new StringBuilder();            while (ligne_lue != null) {                texte.append(ligne_lue).append("\r\n");                ligne_lue = buffer.readLine();            }            text.setText(texte.toString());            buffer.close();            fichier.close();        } catch (FileNotFoundException ex) {            System.out.println("Fichier introuvable !");        } catch (IOException ex) {            System.out.println("Erreur d'entrée-sortie !");        }    }    @Override    public void actionPerformed(ActionEvent e) {        if (e.getSource() == ouvrir) {            ouvrirFichierEnLecture();        }    }    public static void main(String args[]) {        try {            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());        } catch (ClassNotFoundException | InstantiationException |                IllegalAccessException | UnsupportedLookAndFeelException ex1) {            JOptionPane.showMessageDialog(null, "Erreur, Impossible de charger le Look And Feel du système",                    "Chargement échoué", JOptionPane.ERROR_MESSAGE, null);        }        new ReadingTextFile("File Reader").setVisible(true);    }}

واجهة البرنامج :

post-219439-0-88467400-1414972288_thumb.

 

بالتوفيق.

1

شارك هذا الرد


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

هذا مثال يؤدي المطلوب، كتبته لك، أرجو أن يُفيدك :)

import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.*;import javax.swing.*;public class ReadingTextFile extends JFrame implements ActionListener {    Container contenu;    JButton ouvrir;    JLabel chemin;    JTextArea text;    public ReadingTextFile(String titre) {        this.setTitle(titre);        this.setSize(500, 300);        this.setLocationRelativeTo(null);        this.setDefaultCloseOperation(EXIT_ON_CLOSE);        this.initComponents();    }    private void initComponents() {        contenu = this.getContentPane();        JPanel pan = new JPanel();        ouvrir = new JButton("Lecture");        ouvrir.addActionListener(this);        pan.add(ouvrir);        contenu.add(pan, BorderLayout.NORTH);        chemin = new JLabel("Aucun fichier selectionné");        chemin.setOpaque(true);        chemin.setBackground(Color.CYAN);        contenu.add(chemin, BorderLayout.SOUTH);        text = new JTextArea();        text.setEditable(false);        Font font = new Font("Courier New", Font.BOLD, 12);        text.setFont(font);        text.setBackground(Color.ORANGE);        JScrollPane js = new JScrollPane(text);        contenu.add(js, BorderLayout.CENTER);    }    private void ouvrirFichierEnLecture() {        JFileChooser choix = new JFileChooser();        int retour = choix.showOpenDialog(this);        if (retour == JFileChooser.APPROVE_OPTION) {            File f = new File(choix.getSelectedFile().getAbsolutePath());            lireFichier(f);            chemin.setText(choix.getSelectedFile().getAbsolutePath());        }    }    private void lireFichier(File nom) {        try {            FileReader fichier = new FileReader(nom);            BufferedReader buffer = new BufferedReader(fichier);            String ligne_lue = buffer.readLine();            StringBuilder texte = new StringBuilder();            while (ligne_lue != null) {                texte.append(ligne_lue).append("\r\n");                ligne_lue = buffer.readLine();            }            text.setText(texte.toString());            buffer.close();            fichier.close();        } catch (FileNotFoundException ex) {            System.out.println("Fichier introuvable !");        } catch (IOException ex) {            System.out.println("Erreur d'entrée-sortie !");        }    }    @Override    public void actionPerformed(ActionEvent e) {        if (e.getSource() == ouvrir) {            ouvrirFichierEnLecture();        }    }    public static void main(String args[]) {        try {            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());        } catch (ClassNotFoundException | InstantiationException |                IllegalAccessException | UnsupportedLookAndFeelException ex1) {            JOptionPane.showMessageDialog(null, "Erreur, Impossible de charger le Look And Feel du système",                    "Chargement échoué", JOptionPane.ERROR_MESSAGE, null);        }        new ReadingTextFile("File Reader").setVisible(true);    }}

واجهة البرنامج :

attachicon.gifdemo.jpg

 

بالتوفيق.

جزاك الله خيراً ، بالنسبة لقراءة اللغة العربية ظهرت عندي مربعات ما حلها ؟

إستفسار آخر عن واجهة ال FileChooser عند عمل JFileChooser جديد يظهر بالشكل الإفتراضي

 

JFileChooser01_zpsdf645d06.png

 

كيف أجعله يظهر بهذا الشكل ؟

 

JFileChooser02_zps4ce750d0.png

0

شارك هذا الرد


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

 

بالنسبة لقراءة اللغة العربية ظهرت عندي مربعات ما حلها ؟

قم بتغيير الـ encoding إلى UTF8.

 

عند عمل JFileChooser جديد يظهر بالشكل الإفتراضي، كيف أجعله يظهر بهذا الشكل ؟

شكل مكونات Swing يتغير طبيعة حسب الـ Look and Feel.

الشكل الأول عبارة عن الـ File dialog تبع الـ Nimbus و هو الذي كان مُعتمداً في ويندوز 3 في التسعينيات أما الشكل الثاني فهو الشكل الحديث للويندوز، للحصول على الأخير، قم بتغيير الـ L&F إلى UIManager.getSystemLookAndFeelClassName.

0

شارك هذا الرد


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

قم بتغيير الـ encoding إلى UTF8.

 

شكل مكونات Swing يتغير طبيعة حسب الـ Look and Feel.

الشكل الأول عبارة عن الـ File dialog تبع الـ Nimbus و هو الذي كان مُعتمداً في ويندوز 3 في التسعينيات أما الشكل الثاني فهو الشكل الحديث للويندوز، للحصول على الأخير، قم بتغيير الـ L&F إلى UIManager.getSystemLookAndFeelClassName.

لم أستطع تغيير ال encoding في المثال ، كيف أغيره ؟

قرأت هذة الجملة Look and Feel. عند الإنشاء بطريقة Drag & Drop ممكن تقولي كيف أغيرها بالكود ؟

0

شارك هذا الرد


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

 

لم أستطع تغيير ال encoding في المثال ، كيف أغيره ؟

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

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

 

 

قرأت هذة الجملة Look and Feel. عند الإنشاء بطريقة Drag & Drop ممكن تقولي كيف أغيرها بالكود ؟

الطريقة موجودة في الكود الذي أرفقته لك في أول مشاركة !! :)

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

شارك هذا الرد


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

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

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

وجدت هذة الدالة و أضفتها ولكن نفس المشكلة

InputStreamReader inputStreamReader = new InputStreamReader(  new FileInputStream(nom), "UTF8");

ربما أكون أضفتها بطريقة خاطئة ، أتمنى أن تشرحلي الطريقة

0

شارك هذا الرد


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

أخي الكريم، أعتقد أنك لم تُحاول أن تفهم الكود الذي كتبتُه لك في أول مشاركة لأن أجوبة كل الأسئلة التي تطرحها موجودة في الكود !!

 

انظر الصورة :

post-219439-0-49020200-1415100052_thumb.

0

شارك هذا الرد


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

أخي الكريم، أعتقد أنك لم تُحاول أن تفهم الكود الذي كتبتُه لك في أول مشاركة لأن أجوبة كل الأسئلة التي تطرحها موجودة في الكود !!

يا أخي في الأول أعطيتني أكواد وقلت لي تقوم بالمطلوب بدل من أن تفهمني ما الخطأ في أكوادي الموجودة بالموضوع الرئيسي ، ثانياً لم أفهم بعض المصطلحات باللغة الفرنسية ولما حاولت أن أفهم أكوادك قلت لي حاول البحث أولا ولما بحثت قلت لي إن الحل موجود في الكود ! ، إذا كنت تريديني أن أفهم الطريقة أرجو أن تجيبني عن ما الخطأ أو الناقص في الكود الخاص بي

0

شارك هذا الرد


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

الخطأ في الكود تبعك هو عدم وضع قطعة الكود التالية بين معكوفتين

File f = fc.getSelectedFile();String text = ReadFile(f);ta.setText(text);

و هذا الكود بعد التصحيح :

import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import javax.swing.*;import javax.swing.filechooser.FileNameExtensionFilter;/** * * @author Muhammed_Pro */public class FileChooser01 extends JFrame {    JPanel p;    JTextArea ta;    public FileChooser01() {        p = new JPanel(new BorderLayout());        JToolBar tb = new JToolBar();        JButton b = new JButton("Open");        b.addActionListener(new ActionListener() {            @Override            public void actionPerformed(ActionEvent e) {                JFileChooser fc = new JFileChooser();                FileNameExtensionFilter ff = new FileNameExtensionFilter(".txt", "txt");                fc.addChoosableFileFilter(ff);                int er = fc.showDialog(p, "Open file");                if (er == JFileChooser.APPROVE_OPTION) {                    File f = fc.getSelectedFile();                    String text = ReadFile(f);                    ta.setText(text);                }            }        });        ta = new JTextArea();        ta.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));        tb.add(b);        JScrollPane sc = new JScrollPane();        sc.getViewport().add(ta);        p.add(sc);        p.add(ta);        p.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));        add(p);        add(tb, BorderLayout.NORTH);        setVisible(true);        setSize(400, 400);        setLocationRelativeTo(null);        setDefaultCloseOperation(3);    }    public String ReadFile(File f) {        StringBuffer fb;        String FileString, Line;        try {            FileReader fr = new FileReader(f);            BufferedReader brd = new BufferedReader(fr);            fb = new StringBuffer();            while ((Line = brd.readLine()) != null) {                fb.append(Line).append(System.getProperty("Line.seprator"));            }            fr.close();            FileString = fb.toString();        } catch (Exception e) {            return null;        }        return FileString;    }    public static void main(String... args) {        new FileChooser01();    }}
0

شارك هذا الرد


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

قم باضافة الكود التالي الذي قمت انا شخصيا باستخدامه من قبل 3 سنوات

    	//-----------------------------Look&Feel---------------------------------------------//        try {            // Set System L&F            UIManager.setLookAndFeel(                UIManager.getSystemLookAndFeelClassName());        }        catch (UnsupportedLookAndFeelException e) {            // handle exception        }        catch (ClassNotFoundException e) {            // handle exception        }        catch (InstantiationException e) {            // handle exception        }        catch (IllegalAccessException e) {            // handle exception        }      //------------------------------------------------------------------------------------//

ستحصل على الشكل الجميل الذي أردته

بالتوفيق

1

شارك هذا الرد


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

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

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



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

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

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