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

MenuBar example

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

لماذا لا تظهر ال MenuBar على ال Frame ؟

import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;

public class MenuBar_example extends JFrame {

    private JMenu File_Menu, Help_Menu;
    private JMenuBar MenuBar;
    private JButton b1, b2, b3;

    public MenuBar_example() {
        dome();
    }

    private void dome() {
        setVisible(true);
        setSize(new Dimension(400, 300));
        setLayout(null);
        setTitle("Menu example");
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        b1 = new JButton("New");
        b2 = new JButton("Open");
        b3 = new JButton("Exit");

        File_Menu = new JMenu("File");
        Help_Menu = new JMenu("Help");

        File_Menu.add(b1);
        File_Menu.add(b2);
        File_Menu.add(b3);

        MenuBar = new JMenuBar();
        MenuBar.setBounds(0, 0, getWidth(), 30);

        MenuBar.add(File_Menu);
        MenuBar.add(Help_Menu);

        add(MenuBar);

    }
}
#2
اقتباس

 

لماذا لا تظهر ال MenuBar على ال Frame ؟

لأنك قمت بإظهار النافذة قبل أن تقوم بأي عمل.

 

ملاحظات سريعة على الكود تبعك :

  1. الـ items يُفضل أن تكون كائنات من نوع JMenuItem و ليست JButton.
  2. لا أدري لماذا استخدمت القيمة null مع setLayout !
  3. لإضافة الـ MenuBar إلى الـ frame استخدم الدالة setJMenuBar.

 

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

import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class MenuBar_example extends JFrame {

    private JMenu File_Menu, Help_Menu;
    private JMenuBar MenuBar;
    private JMenuItem menu_item1, menu_item2, menu_item3;

    public MenuBar_example() {
        dome();
    }

    private void dome() {
        menu_item1 = new JMenuItem("New");
        menu_item2 = new JMenuItem("Open");
        menu_item3 = new JMenuItem("Exit");

        File_Menu = new JMenu("File");
        Help_Menu = new JMenu("Help");

        File_Menu.add(menu_item1);
        File_Menu.add(menu_item2);
        File_Menu.add(menu_item3);

        MenuBar = new JMenuBar();
        MenuBar.setBounds(0, 0, getWidth(), 30);

        MenuBar.add(File_Menu);
        MenuBar.add(Help_Menu);

        setJMenuBar(MenuBar);

        setTitle("Menu example");
        setSize(new Dimension(400, 300));
        setLocationRelativeTo(null);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public static void main(String... args) {
        new MenuBar_example();
    }
}

بالمناسبة، هل تمت إجابتك في هذين الموضوعين ؟

مشكلة في مثال تشفير

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

على الأقل أود أن أعرف هل استطعت مُساعدتك أم لا :)

تم تعديل هذه المشاركة بواسطة Snack3r في 5 نوفمبر 2014 في 13:08

1
#3

بالمناسبة، هل تمت إجابتك في هذين الموضوعين ؟


 


مشكلة في مثال تشفير

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

على الأقل أود أن أعرف هل استطعت مُساعدتك أم لا :)

مثال القراءة في الملفات إشتغل الكود الخاص بي ولكن ليس كما توقعت ، لا يقرأ العربي و أيضاً مشاكل بالتنسيق مع إني ضابط التنسيق

مثال التشفير نسخته كما هو ولكن لم أستطع فهمه ، وعندما أكتب أي كلمة مثلاً Snack3r يعطي إستثناءات !

الصراحة خجلت أن أسألك عن تفاصيل في نفس المواضيع مرة آخرى لأني أعتقد إنك لا تحب التفصيل في الشرح :blush: كلما تقدمت في اللغة إزدادت صعوبتها

#4

أولا، هل لا زالت لديك مشاكل في كود هذا الموضوع ؟

أنا هنا لمساعدتك :)

 

اقتباس

 

مثال القراءة في الملفات إشتغل الكود الخاص بي ولكن ليس كما توقعت ، لا يقرأ العربي و أيضاً مشاكل بالتنسيق مع إني ضابط التنسيق

كنت أتوقع مشكلة التنسيق، استبدل الدالة ReadFile بهذه :

public void ReadFile(File f) {
        try {
            FileReader fichier = new FileReader(f);
            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();
            }
            ta.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 !");
        }
    }

و قم بمناداتها هكذا :

File f = fc.getSelectedFile();ReadFile(f);

بهذه الطريقة ستحل مشاكل التنسيق.

بالنسبة للحروف العربية، أعتقد أن الكود تبعك يقرأها دون مشاكل، انظر الصورة :

post-219439-0-74756800-1415189346.jpg

 

 

اقتباس

 

مثال التشفير نسخته كما هو ولكن لم أستطع فهمه

إن لم تستطع فهمه في بداية الأمر فهذا شيء طبيعي لأنني استخدمت فيه أموراً متقدمة في التشفير لكن مع مرور الوقت و المطالعة ستفهم الكود بشكل جيد و يُمكنني أن أشرح لك الكود سطراً سطراً (إن أردت ذلك، اكتب مشاركة في موضوع التشفير هناك حتى لا نُخرج هذا الموضوع عن إطاره)

 

اقتباس

 

عندما أكتب أي كلمة مثلاً Snack3r يعطي إستثناءات !

 

توقعتُ ذلك لأنني استخدم مكتية Bouncy Castle للتشفير، لذا يجب عليك تثبيتها أولا.

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

 

اقتباس

 

الصراحة خجلت أن أسألك عن تفاصيل في نفس المواضيع مرة آخرى لأني أعتقد إنك لا تحب التفصيل في الشرح

ليس هكذا يا أخي الفاضل !

شوف عزيزي، انت كمبرمج سيأتي عليك يوم تواجه فيه مشاكلا و لن يكون Snack3r بجنبك لذا أنا أحاول قدر المستطاع أن أعلمك كيف تعتمد على نفسك و كيف تتعود على البحث عن التفاصيل بنفسك لأن الآخرين لن يكونوا بجنبك في كل وقت و يعلم الله أني ما فعلت هذا إلا لمصلحتك :)

 

اقتباس

 

كلما تقدمت في اللغة إزدادت صعوبتها

صحيح و هذا أمر طبيعي جداً !

لكن لا تستسلم وواصل التعلم، قريباً جداً ستجد أن المواضيع التي كانت بالأمس مُعقدة بالنسبة لك، أصبحت في غاية السهولة .. :)

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

1
#5
Snack3r كتب:

أولا، هل لا زالت لديك مشاكل في كود هذا الموضوع ؟

أنا هنا لمساعدتك :)

لا تمام إشتغل معي ولكن أريد أن أفهم ما الفرق بين add(MenuBar) وبين setJMenuBar(MenuBar);  لأن في المثال الذي أطبق منه الشرح أضفها add و إشتغلت معه

 

كنت أتوقع مشكلة التنسيق، استبدل الدالة ReadFile بهذه :

public void ReadFile(File f) {
        try {
            FileReader fichier = new FileReader(f);
            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();
            }
            ta.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 !");
        }
    }

و قم بمناداتها هكذا :

File f = fc.getSelectedFile();ReadFile(f);

ظهرتلي بعض المشاكل الآخرى

 

 

FileReader02_zpsb2288354.png

 

إذا كان ظني صحيح فإنك أضفت ("\r\n") للتنسق ، أنا  أعرف \n مسبقاً و هي لنزول سطر جديد ولكن ما معنى \r ؟

 

إن لم تستطع فهمه في بداية الأمر فهذا شيء طبيعي لأنني استخدمت فيه أموراً متقدمة في التشفير لكن مع مرور الوقت و المطالعة ستفهم الكود بشكل جيد و يُمكنني أن أشرح لك الكود سطراً سطراً (إن أردت ذلك، اكتب مشاركة في موضوع التشفير هناك حتى لا نُخرج هذا الموضوع عن إطاره)

 

 

توقعتُ ذلك لأنني استخدم مكتية Bouncy Castle للتشفير، لذا يجب عليك تثبيتها أولا.

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

كيف أثبت المكتبة ؟

 

هذة الإستثناءات

java.security.InvalidKeyException: Illegal key size
	at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1034)
	at javax.crypto.Cipher.implInit(Cipher.java:800)
	at javax.crypto.Cipher.chooseProvider(Cipher.java:859)
	at javax.crypto.Cipher.init(Cipher.java:1370)
	at javax.crypto.Cipher.init(Cipher.java:1301)
	at JavaGUI01.TextEncryption.encrypt(TextEncryption.java:50)
	at JavaGUI01.Main.main(Main.java:92)
#6
اقتباس

 

أريد أن أفهم ما الفرق بين add وبين setJMenuBar

 

add تقوم بإضافة الـ menubar كعنصر داخل النافذة و setJMenuBar تقوم بوضع الـ menubar في موقع شريط القوائم أعلى النافذة.

 

اقتباس

 

ظهرتلي بعض المشاكل الآخرى

لا حظ أنك لم تقم بتغيير مناداة الدالة في البلوك الخاص بالـ FileChooser لأن الدالة الجديدة تُعيد void.

 

اقتباس

 

إذا كان ظني صحيح فإنك أضفت ("\r\n") للتنسق ، أنا  أعرف \n مسبقاً و هي لنزول سطر جديد ولكن ما معنى \r ؟

\n هو الـ Line Feed و \r هو الـ carriage return. (اقرأ في ويكيبيديا عنهما للمزيد من التفاصيل)

بشكل عام، العودة إلى السطر تختلف باختلاف نظام التشغيل و الـ encoding، في Unix مثلا تتم العودة إلى السطر بـ \n فقط أما في الـ Windows فتتم العودة إلى السطر بـ \r\n.

 

اقتباس

 

هذة الإستثناءات

java.security.InvalidKeyException: Illegal key size
	at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1034)
	at javax.crypto.Cipher.implInit(Cipher.java:800)
	at javax.crypto.Cipher.chooseProvider(Cipher.java:859)
	at javax.crypto.Cipher.init(Cipher.java:1370)
	at javax.crypto.Cipher.init(Cipher.java:1301)
	at JavaGUI01.TextEncryption.encrypt(TextEncryption.java:50)
	at JavaGUI01.Main.main(Main.java:92)

كما توقعت، لم يتم العثور على الـ Bouncy Castle Provider لأنه لم يتم تثبيته بعد !

راجع هذه المشاركة لمعرفة كيفية تثبيت المكتبة.

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

1
#7
Snack3r كتب:
لا حظ أنك لم تقم بتغيير مناداة الدالة في البلوك الخاص بالـ FileChooser لأن الدالة الجديدة تُعيد void.

عرفتها و مازال الخطأ عند الدالة public void ReadFile(File f) {

illegal start of expression

#9
Snack3r كتب:

ممكن أشوف الكود الكامل بعد التعديل ؟

package JavaGUI01;

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.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
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();
                    ReadFile(f);

                }
            }
        });  

    

    public void ReadFile(File f) {
        try {
            FileReader fr = new FileReader(f);
            BufferedReader buffer = new BufferedReader(fr);
            String ligne_lue = buffer.readLine();
            StringBuilder texte = new StringBuilder();
            while (ligne_lue != null) {
                texte.append(ligne_lue).append("\r\n");
                ligne_lue = buffer.readLine();
            }
            ta.setText(texte.toString());
            buffer.close();
            fr.close();
        } catch (FileNotFoundException ex) {
            System.out.println("Fichier introuvable !");
        } catch (IOException ex) {
            System.out.println("Erreur d'entrée-sortie !");
        }
    }
}
#11

وبعد كل هذة التصحيحات و التعديلات لم يعمل الكلاس :angry:  كلاس نحس أنظر ههههه يا أخي الصورة لا يوجد أخطاء


 


FileReader03_zps6c9043a8.png


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