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

ماهو الخطأ في هذا الكود؟ "login Screen"

بدأه BYQ في 7 نوفمبر 2009 · 8 رد · 1,271 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بدايتي لإنشاء برنامج كانت شاشة دخول برقم سري, ولكن توقفت في اول خطوه ولا اعلم مالخطأ في هذا الكود:

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class Login
{

public static void main(String[] args)
{

public static String userId = "usrid";
String password = "pass";

{
    JFrame frame = new JFrame("Login");
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400,100);

    JLabel label = new JLabel("Enter Password");
    JPanel panel = new JPanel();
    frame.add(panel);

    JPasswordField pass = new JPasswordField(9);
    pass.setEchoChar('*');
    pass.addActionListener(new AL());
    panel.add(label, BorderLayout.WEST);
    panel.add(pass, BorderLayout.WEST);
}

static class AL implements ActionListener
{
 public actionPerformed (ActionEvent e)
 {
 JPasswordField input = (JPasswordField) e.getSource();
 char[] passy = input.getPassword();
 String p = String("passy);

if (p.equals(password))
{
JOptionPane.showMessageDialog(null,"Correct");
else
JOptionPane.showMessageDialog(null,"Incorrect");

}
 }
}
}
}

مع الشكر الجزيل،

BYQ

#2

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

اخى الكريم لديك بعض الاخطاء التى يجب ان تتعلمها وتحاول الا تقع فيها مرة اخرى

لكن الموضوع بسيط نمشى مع الاخطاء واحدة واحدة

اولا

public static String userId = "usrid";

لاحظ انك كتبت هذا السطر داخل ال main method ولا يجوز استخدام public static الا على مستوى الفئة او Class

ولحل هذا الخطأ اما ان تنقل هذا السطر على مستوى ال class او تزيل الكلمتان public و static وتتركه مكانه

ويستحسن ان تجعل كل الحقول على مستوى ال class وتجعلها غير مرئية للفئات الاخرى بكتابة الكلمة private

import javax.swing.*;

import java.awt.event.*;

import java.awt.*;



public class Login

{


private String userId = "usrid";

ثانيا

String password = "pass";

لقد قمت بتعريف هذا الحقل او المتغير داخل ال main method ايضا ولكنك تريد استدعاؤه فى ال inner class AL وهذا خطأ

لذلك يجب نقله على مستوى الفئة وتعريفه ب static وساخبرك عن السبب

import javax.swing.*;

import java.awt.event.*;

import java.awt.*;



public class Login

{



private String userId = "usrid";

private static String password = "pass";

ثالثا لاحظ هذه القطعة

public static String userId = "usrid";

String password = "pass";



{ // <--------------<

لماذا قمت بفتح هذا القوس المشار اليه فى الكود فهو ليس بداية دالة او شرط فقم بحذفه

رابعا لاحظ هذه القطعة

if (p.equals(password))

{ // <-----------<

JOptionPane.showMessageDialog(null,"Correct");

else

JOptionPane.showMessageDialog(null,"Incorrect");

فقد قمت بفتح قوس لاداة الشرط if ولم تقم باغلاقه كما هو مشار اليه فى الكود

يمكنك وضع قوس اخر لاغلاق الشرط قبل كلمة else ويمكنك ايضا ان تحذف القوس الاول طالما انك تستدعى امر واحد بعد الاداة if

if (p.equals(password))

{

   JOptionPane.showMessageDialog(null,"Correct");

}

else

{

   JOptionPane.showMessageDialog(null,"Incorrect");

}

او تكتبها بدون اقواس

if (p.equals(password))

	JOptionPane.showMessageDialog(null,"Correct");



else

	JOptionPane.showMessageDialog(null,"Incorrect");

خامسا لاحظ الكود التالى

public actionPerformed (ActionEvent e)

لو لاحظت الكود جيدا لوجدت انك لم تحدد هل الدالة ستعيد قيمة ام لا

فاما ان تكتب void وهى بمعنى ان الدالة لن تعيد قيم واما ان تكتب نوع البيانات التى تعيدها الوظيفة

ولكن هذه الوظيفة او الطريقة لا تعيد قيم فاكتب الكلمة void

public void actionPerformed (ActionEvent e)

ولكن مازال هناك خطأ بسيط وهو انك تركت مسافة بين تعريف الوظيفة وبين القوس الذى يحتوى على المتغيرات التى يتم ارسالها للوظيفة

public void actionPerformed (ActionEvent e)

سادسا الفئة String لا تأخذ قيمة char array او مصفوفة من الحروف كمتغير مباشرة لتحويلها الى نوع نص text

String p = String("passy);// what "

ولكنها تستقبلها داخل وظيفة او method موجودة بداخلها وهى كالتالى

String p = String.valueOf(passy);

واخيرا بما انك تريد استدعاء الفئة AL فى ال main method وهى static فيجب ان تجعل الفئة AL ايضا static

ولاستدعاء المتغير password فى الفئة AL يجب ان تكون static هى الاخرى

ولكن يستحسن ولاسباب امنية ان تجعلها خاصة بالفئة الحالية وكل ما بداخلها من فئات وتكتب private قبل كلمة static

private String userId = "usrid";

private static String password = "pass";

ملحوظة اخيرة حاول ان تقرأ الرسائل التى تظهر لك عند عمل ترجمة للملف

فهى تعرض تفاصيل مهمة مرتبطة بالخطأ لدرجة انها تعرض رقم السطر الذى يحتوى على الخطأ

وان شاء الله مع الوقت تستطيع تتعامل مع هذه الرسايل المهمة

بالتوفيق

تم تعديل هذه المشاركة بواسطة MOHAMED FATHEI في 7 نوفمبر 2009 في 18:53


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#3

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

شكراً لك اخي الحبيب على الرد الوافي، ولقد نجحت في ان شاء هذه الخطوه بإذن الله والشكر لك

ولي استفسار بسيط، كيف يمكنني ان اضيف خانة User ID بحيث اكون نافذة تسجيل دخول كامله

بإنتظاركم،

BYQ

#4

هذه هي محاولتي:

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class Login
{

private String userId = "usrid";
private static String password = "pass";

public static void main(String[] args)
{

JFrame frame = new JFrame("Login");
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400,100);

JLabel label = new JLabel("Enter User ID"),label1 = new JLabel("Enter Password");
JPanel panel = new JPanel();
frame.add(panel);

TextField usr = new TextField(+6);
usr.addActionListener(new AL());
panel.add(label1, BorderLayout.WEST);
panel.add(usr, BorderLayout.WEST);

JPasswordField pass = new JPasswordField(9);
pass.setEchoChar('*');
pass.addActionListener(new AL());
panel.add(label, BorderLayout.WEST);
panel.add(pass, BorderLayout.WEST);
}

static class AL implements ActionListener
{
JPasswordField input = (JPasswordField) e.getSource();
TextField input = (TextField) c.getSource();

public void actionPerformed(ActionEvent e)&&(ActionEvent c)
{

char[] passy = input.getPassword();
String p = String.valueOf(passy);
String r = String("usre");

if(p.equals(password)&&(r.equals(usre))
JOptionPane.showMessageDialog(null,"Correct");
else
JOptionPane.showMessageDialog(null,"Incorrect");

}
}
}

الاخطاء:

java:40: ';' expected

public void actionPerformed(ActionEvent e)&&(ActionEvent c)

لا أعلم كيف يمكنني ان اضيف اثنين من نوع ActionEvent جنباً إلى جنب!

تم تعديل هذه المشاركة بواسطة BYQ في 8 نوفمبر 2009 في 23:22

#5

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

اخى العزيز BYQ

هل تريد عمل هذه الشاشة فقط

ام تريد ان تبرمج تطبيق كامل

فاذا كنت تريد عمل تطبيق كامل فيجب اولا ان تتعلم اساسيات اللغة

فعملية اضافة مربع نص الى الشاشة التى تصممها اسهل ما يكون

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

نحن اخوة واحاول ان ارشدك الى الطريق الصحيح

فالاجابة على هذا السؤال ليست صعبة

لكن بعد الاجابة عليه هل تظن انك ستتعلم البرمجة بهذه الطريقة

تكتب سؤالا وتنتظر الاجابة

اخى ابحث عن كتب جافا فى هذا المنتدى الغنى بالمادة العلمية

واقراها وتعلم الاساسيات اولا واى مساعدة لن نتاخر عنك

واى مشكلة تتعرض لها اكتبها وسنساعدك فى حلها ان شاء الله

بالتوفيق


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#6

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

الاخ العزيز BYQ

ارجو ما تكون زعلت منى

انا كنت اكتب ردى اثنا ما كنت انت تكتب ردك ولم ارى محاولتك

وهذا الكود بعد التعديل

import javax.swing.*;

import java.awt.event.*;

import java.awt.*;



public class Login

{



private static final String userId = "userid";

private static final String password = "pass";



private static JPasswordField pass =null;

private static JTextField usr =null;



public static void main(String[] args)

{



JFrame frame = new JFrame("Login");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



JLabel label = new JLabel("Enter User ID");

JLabel label1 = new JLabel("Enter Password");

JPanel panel = new JPanel();

frame.add(panel);



usr = new JTextField(+6);

usr.addActionListener(new AL());

panel.add(label);

panel.add(usr);



pass = new JPasswordField(9);

pass.setEchoChar('*');

pass.addActionListener(new AL());

panel.add(label1);

panel.add(pass);

frame.pack();

frame.setLocationRelativeTo(null);

frame.setVisible(true);

}



static class AL implements ActionListener

{





public void actionPerformed(ActionEvent e)

{



String p ="";



char[] passy = pass.getPassword();

p = String.valueOf(passy);



String r = usr.getText();



if(p.equals(password)&&(r.equals(userId)))

JOptionPane.showMessageDialog(null,"Correct");

else

JOptionPane.showMessageDialog(null,"Incorrect");



}

}

}

لكن مازلت عند رايى وانصحك بدراسة كتاب JAVA How To Program

بالتوفيق


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#7

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

أهلا ومرحباً بك اخي الغالي

انت المعلم ونحن اخوة ولن ااخذ على خاطري منك, مع انني استغربت الرد بعض الشي قبل ردك الثاني هههه

في الحقيقة انني طالب في الجامعة بتخصص Business Informatics وانا احب البرمجة واحب ان اتعلمها

وفي هذا الكورس لحسن الحظ انني ادرسها من ضمن الجدول الدراسي

ولكنني في البداية فقط, ومع الأسف ان الجامعه لا يمدونني الا بالاشياء البسيطه البدائية جدا

فهذا الكود الذي كتبته هو نتيجه لقرائتي وبحثي من خلال الانترنت ليس من تعلمي دراسيا

ثانياً انا سعيد لتواصلك في القسم فالقسم شبه ميت والاخوان مشغولين في بعض الاوقات وحتى الاعضاء

بالنسبة للكتاب سوف اشتريه عن طريق الانترنت ان شاء الله

مع الشكر الجزيل لك ولكل من يمدنا بالمساعده,

BYQ

#8

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

اخى الغالى يجب ان تلتمس العذر لاخواننا فى المنتدى

فانت نفسك بعد ان تتوغل فى الدراسة ولو لمسافة قريبة ستعرف مدى شغلك وانشغالك فى هذا المجال

ولن يكون لديك وقت لاى شئ

واليك الكتاب بنسخته الجديدة

إضغط هنا لتحميل الكتاب

المنتدى ملئ بالكتب والامثلة والمواضيع والمناقشات

كل ما عليك هو استخدام البحث

وستصل الى ماتريد ان شاء الله

واى مساعدة نحن فى الخدمة

بالتوفيق


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#9

ان شاء الله الكل يكون بخير من اعضاء ومشرفين

..

.

شكراً لك اخي الغالي على الرابط

تم التحميل بإذن الله تعالى

وجاري طباعتة

لك جزيل الشكر على التواصل،

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