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

Great new object

بدأه ريحانة الاقصى في 23 يناير 2012 · 19 رد · 737 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

برنامجي عبارة عن نظام امتحانات كل مرة يدخل user

وفي كل مرة يدخل فيها شخص انشئ كائن خاص به من الكلاس الموجود عندي

	frame.setVisible(false);

     		user_interface object=new user_interface();
     		object.setvisable(true);

اليس المفروض انه هنا كل مرة ينشئ كائن جديد؟؟

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

كيف اجعله في كل مرة يبدء من الصفر وكانني اعمل run للبرنامج

يستحيل اعادة تصفير جميع ال variable وال array

كيف الغى الكائن السابق بعد الانتهاء منه انا اخفيه من خلال

object.setvisable(true);
#2

يرجى وضع الكود لمشاهده اكثر تفاصيل المشكلة كى نستطيع مساعدتك

لانها غامضة يمكن يكون هناك امور اخرى لم تذكرها فى شرحك

وشكرا

Software Developer
Mahmoudkelany.com


 

#3
Mahmoud Kelany كتب:

يرجى وضع الكود لمشاهده اكثر تفاصيل المشكلة كى نستطيع مساعدتك

لانها غامضة يمكن يكون هناك امور اخرى لم تذكرها فى شرحك

وشكرا

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

ولكن رح عيد بطريقة تانية

	else if(passward.getText().equalsIgnoreCase( "user")){

     		frame.setVisible(false);
     		studant_id=log_in_Type.getText();
     		user_interface object=new user_interface();
     		object.setvisable(true);

        	}

في كل مرة يتحقق فيها هذا الشرط حسب الكود يخفي الفريم الحالي وينشئ كائن من الكلاس user_interface اسم هذا الكائن object

ويظهر الفريم تبعه من خلال object.setvisable(true

فاذا في المرة الاولى انشئ الكائن واظهر الفريم الخاص به وتحقق الشرط مرة اخرى

اليس من المفروض ان ينشئ كائن جديد من الكلاس ويظهر الفريم الخاص به

ولكن ما مصير القديم ؟؟

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

فهل الامر object.setvisable(true يظهر اي object لانه الان اصبح لدي كائنين بنفس الاسم

اتمنى اكون وضحت المقصود

#4

عندما انهي عملي على الفرم الذي انشئته باس object اقوم باخفاءه

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

كيف اقوم باغلاق الفريم وليس اخفاءه

disopse();

لا تنهي الفريم بشكل كلي

هل اذا انشئت الكائن باسم مختلف تنتهي المشكلة ؟؟

ولكن كيف انشئ الكائن في كل مرة باسم مختلف ؟؟؟؟؟؟؟؟؟؟؟

#5
ريحانة الاقصى كتب:

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

ولكن رح عيد بطريقة تانية

	else if(passward.getText().equalsIgnoreCase( "user")){

     		frame.setVisible(false);
     		studant_id=log_in_Type.getText();
     		user_interface object=new user_interface();
     		object.setvisable(true);

        	}

في كل مرة يتحقق فيها هذا الشرط حسب الكود يخفي الفريم الحالي وينشئ كائن من الكلاس user_interface اسم هذا الكائن object

ويظهر الفريم تبعه من خلال object.setvisable(true

فاذا في المرة الاولى انشئ الكائن واظهر الفريم الخاص به وتحقق الشرط مرة اخرى

اليس من المفروض ان ينشئ كائن جديد من الكلاس ويظهر الفريم الخاص به

ولكن ما مصير القديم ؟؟

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

فهل الامر object.setvisable(true يظهر اي object لانه الان اصبح لدي كائنين بنفس الاسم

اتمنى اكون وضحت المقصود

بصراحه لم افهم ذلك

لان المشكله فى الكود فبالتالى لا استطيع المساعده هكذا

ثانيا ما ادراكى اننا لا نستطيع فهم ذلك

Software Developer
Mahmoudkelany.com


 

#6

لان الكود كبير جدا ويعتمد على داتا بيس

سارفقه مضغوطا

الملف عبارة عن 12 كلاس وربما اكثر ولكن المشكلة في

الكلاس login

if(rep==false){

     		frame.setVisible(false);
     	    studant_id=log_in_Type.getText();
     		user_interface object=new user_interface();
     		}

عندما ينشئ كائن يعمل ويكون الوضع طبيعي ويظهر فريم يتم العمل عليه ويحتوى هذا الفريم على زر logout يعود الى الفريم الاصلي الذي تم من خلاله انشاء الفريم الثاني

اذا حاولت الدخول مرة اخرى ينشئ فريم ثاني ولا يمسح المحتويات السابقة

post-218481-032450600 1327494987_thumb.j

من هنا اذا ادخلت رقم غير مستخدم سابقا مع الباسوريد user سيظهر الفريم التالي هذا

post-218481-028401000 1327494827_thumb.j

وبعد عدة مرات على next ساصل الى هذا الفريم

post-218481-020268600 1327494907_thumb.j

اذا ضغطت على logout سيظهر هذا الفريم اذا غير رقم المستخدم وكان متاح

post-218481-032450600 1327494987_thumb.j

عند الدخول مرة اخرى

وهنا هي المشكلة محتويات الفريم تحتوي جزء من الجديد وجزء من القديم

post-218481-071408000 1327495057_thumb.j

قبل عمل logout في كل مرة اضغط على زر next يقوم بتحديث البنل الموجود على الفريم فقط ولكن عند عمل خروج يخفي الفريم

ملاحظة :-

في كلاس connection يقوم بالاتصال بداتا بيس غير مرفقة بالمشروع لاني الصراحة ما اعرف كيف ارفقها

وفي هذا الكلاس يخزن قيم لجميع المصفوفات في البرنامج بالتالي لن يعمل البرنامج من دون الداتا بيس.........هل استطيع ارفاقها ؟؟؟

data project.rar

post-218481-022642700 1327494724_thumb.j

المرفقات
1-25-2012 02-27-26 م.jpg1-14-2012 08-58-48 م.jpg1-25-2012 02-28-07 م.jpg1-25-2012 02-29-52 م.jpg1-25-2012 02-31-00 م.jpg

تم تعديل هذه المشاركة بواسطة ريحانة الاقصى في 25 يناير 2012 في 17:44

#7

طبعا لازم ترفقيها

لان مش هاعرف اشغل البرنامج من غيرها

ثانيا انتى شغاله على IDE ايه ؟؟؟

لان الاكواد وكل شىء على بعضه عندى ودا مش شكل IDE او يمكن انا مش عارف انتى شغاله بايه

Software Developer
Mahmoudkelany.com


 

#8
Mahmoud Kelany كتب:

طبعا لازم ترفقيها

لان مش هاعرف اشغل البرنامج من غيرها

ثانيا انتى شغاله على IDE ايه ؟؟؟

لان الاكواد وكل شىء على بعضه عندى ودا مش شكل IDE او يمكن انا مش عارف انتى شغاله بايه

ما بعرف كيف ارفقها ....بتقدر تساعدني كيف ارفقها ؟؟

لما حكيتلك ما رح تفهم شغلي لاني عارفتو شو هو هههههههه

انا بشتغل ع ال jecreater ومش عاملته بروجكت

بيشتغل من الكلاس main عادي بيتعرف ع باقي الكلاسات

#9

من الواضح انك شغاله MySQL

من خلال الـ Administrator ادخلى على الامر backup

وقومى بالضغط على new project

وبعد ذلك قومى بالتعليم على قاعده البيانات الخاصه بك وقومى بالضغط على هذا الزرار <

وبعدها قومى بالضغظ على الزر execute backup now

هيطلب منك مكان تحفظى فيه النسخه

وبعد كدا ترفعيها وبس

Software Developer
Mahmoudkelany.com


 

#10

طب دلوقتى فيه مشاكل موجوده

عندك كلاس اسمها

admin_interface2 بس دا اسم الملف لكن الكلاس نفسها اسمها admin_interface

وفيه كلاس بنفس الاسم

ونفس الكلام مع insertMultible2 دا اسم الملف

بداخله كلاس اسمها insertMultible

مع العلم ان فيه ملف تانى اسمه insertMultible وبداخله كلاس insertMultible

ونفس الكلام مع table هذا اسم الملف بداخله كلاس اسمها table_class

مع العلم ان فيه ملف اسمه table_class وبداخله كلاس اسمها table_class

ونفس الكلام مع ColoredTableCellRenderer هذا اسم الملف وبداخله كلاس اسمها MyRenderer

مع العلم ان فيه ملف اسمه MyRenderer وبداخله كلاس اسمها MyRenderer

ازاى اصلا البرنامج يشتغل مع هذه الاخطاء ؟؟

Software Developer
Mahmoudkelany.com


 

#11
Mahmoud Kelany كتب:

طب دلوقتى فيه مشاكل موجوده

عندك كلاس اسمها

admin_interface2 بس دا اسم الملف لكن الكلاس نفسها اسمها admin_interface

وفيه كلاس بنفس الاسم

ونفس الكلام مع insertMultible2 دا اسم الملف

بداخله كلاس اسمها insertMultible

مع العلم ان فيه ملف تانى اسمه insertMultible وبداخله كلاس insertMultible

ونفس الكلام مع table هذا اسم الملف بداخله كلاس اسمها table_class

مع العلم ان فيه ملف اسمه table_class وبداخله كلاس اسمها table_class

ونفس الكلام مع ColoredTableCellRenderer هذا اسم الملف وبداخله كلاس اسمها MyRenderer

مع العلم ان فيه ملف اسمه MyRenderer وبداخله كلاس اسمها MyRenderer

ازاى اصلا البرنامج يشتغل مع هذه الاخطاء ؟؟

كل هاي الكلاسات اللي انت حكيت عنها اصلا ما بستخدمها في البرنامج

كانت تجريبية وما حذفتها لما بعت الكود ...

#12

حذفت جميع الملفات التي لا تلزم وحاولت ترتيب الصور وباقي الملفات

النسخة المعدلة

data project.rar

وعملت نسخة من الداتا بيس انا اتعامل مع ال

MySQL browser

بس لما نسختهم صيغة الملف بتطلع sql صراحة ما بعرف كيف المفروض انت تتعامل مع هاد الملف او اذا في طريقة تانية لارفاقهم بالمشروع !

online_exam.rar

#13

انا دلوقتى كل حاجه عندى

لكن مشكلتك تكمن فى انك تستخدمى كل شىء static

وتقومى بالربط عن طريقه ولكن هذه طريقه سيئه جدا

هى ما تحدث لك هذه الاخطاء فالبرنامج

اعيدى صياغة البرنامج بدون استخدام الـ static لان البرنامج لا يحتاج لشىء ليكون موحد لتستخدمى static

استخدمى Setters/Getters للكائنات التى تريدى استدعائها ولكن لا تستخدميها static لانها فى الذاكره ستكون نسخه واحده

حاولى انى تفعلى ما ذكرته لك

لانى حاولت لكن للاسف لا استطيع لان الكود ايضا مخربط كتير اوووى

بالتوفيق

1

Software Developer
Mahmoudkelany.com


 

#14
Mahmoud Kelany كتب:

انا دلوقتى كل حاجه عندى

لكن مشكلتك تكمن فى انك تستخدمى كل شىء static

وتقومى بالربط عن طريقه ولكن هذه طريقه سيئه جدا

هى ما تحدث لك هذه الاخطاء فالبرنامج

اعيدى صياغة البرنامج بدون استخدام الـ static لان البرنامج لا يحتاج لشىء ليكون موحد لتستخدمى static

استخدمى Setters/Getters للكائنات التى تريدى استدعائها ولكن لا تستخدميها static لانها فى الذاكره ستكون نسخه واحده

حاولى انى تفعلى ما ذكرته لك

لانى حاولت لكن للاسف لا استطيع لان الكود ايضا مخربط كتير اوووى

بالتوفيق

كيف استعمل ال set ,get في استدعاء المصفوفات والفريم الخاص بكل كلاس

هذه تفيدني في حال المتغيرات فقط !!!!!!!!!!!!!!!!

#15

ايه المشكله عندى مصفوفه هكذا

  private ArrayList<String> list;

    public ArrayList<String> getList() {
        return list;
    }

    public void setList(ArrayList<String> list) {
        this.list = list;
    }

والفريم

private JFrame loginFrame;

    public JFrame getLoginFrame() {
        return loginFrame;
    }

    public void setLoginFrame(JFrame loginFrame) {
        this.loginFrame = loginFrame;
    }

وعندما انتقل من كلاس لاخرى واحتاج شىء منها ارسل اوبجت منها للكلاس الاخرى

مثلا

import java.util.ArrayList;
import javax.swing.JFrame;

/**
 *
 * @author Com.JKelany
 */
public class LoginFrame extends JFrame {

    private ArrayList<String> list;
    private int num;
    private double sum;

    /*
     * some code here
     * and any thing else
     */
    // in the code i want to call the second class but i
    //want to deal with this class also from the second class
    SecondClass sc = new SecondClass(this);

    public ArrayList<String> getList() {
        return list;
    }

    public void setList(ArrayList<String> list) {
        this.list = list;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    public double getSum() {
        return sum;
    }

    public void setSum(double sum) {
        this.sum = sum;
    }
}

import java.util.ArrayList;

/**
 *
 * @author Com.JKelany
 */
public class SecondClass {

    private LoginFrame loginFrame;

    public SecondClass(LoginFrame loginFrame) {
        this.loginFrame = loginFrame;
    }

    // after some code it want to get the list that is in the loginFrame
    // just call the method getList() on the loginFrame
    private void inti() {
        ArrayList<String> list = loginFrame.getList();
        loginFrame.setSum(10.4);
        loginFrame.setNum(10);
    }
}

انظرى الى الاكواد ولاحظى كيف تنقلت من بين كلاس للاخرى واستخدمت متغيرات موجوده فى الكلاس الاخرى دون جعلها static

وبعدها قومى بتحويل كودك هكذا

بالتوفيق

1

Software Developer
Mahmoudkelany.com


 

#16

شكرررررررررررررا جزيلا حولتها وحللت المشكلة

حولت الفريم ولم احول المصفوفات لانني اصلا احتاجها موحدة

لم اكن اعرف ان استخدام static يوحد الكائنات في الذاكرة فانا استعملها دائما ولم اعرف ما فائدة ال set ,get من قبل

#17
ريحانة الاقصى كتب:

شكرررررررررررررا جزيلا حولتها وحللت المشكلة

حولت الفريم ولم احول المصفوفات لانني اصلا احتاجها موحدة

لم اكن اعرف ان استخدام static يوحد الكائنات في الذاكرة فانا استعملها دائما ولم اعرف ما فائدة ال set ,get من قبل

الحمدلله :)

بالتوفيق :lol:

Software Developer
Mahmoudkelany.com


 

#18

في الكلاس insert multiple

يعرض جميع الاسئلة الموجودة في الداتا بيس حتى يمكن الادمن من اختيار اسئلة معينة من خلال اضافة checkbook ولكن عند الضغط عليه تظهر كتابة true بدل من ان يزيل الصح

كما هو في الصورة

post-218481-008315900 1327588063_thumb.j

استخدمت

 class CheckSameh extends JCheckBox implements TableCellRenderer
    {
        public CheckSameh()
        {

             setBackground(Color.WHITE);
            setHorizontalAlignment(CENTER);
        }

        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected
                , boolean hasFocus, int row, int column) {
            setSelected(((Boolean)value).booleanValue());
            return this;
        }
    }

من اجل وضع ال check box

  table.getColumnModel().getColumn(4).setCellRenderer(new CheckSameh());


           for(int i=0;i<Connect.qustion.size();i++){


                                String qustion=""+Connect.qustion.get(i);

                                String answer=""+Connect.Answer.get(i) ;

                                String level=""+Connect.level.get(i);

                                String time=""+Connect.time.get(i);

                                Object obj[] = {qustion,answer,level,time,true};
                                jdtm.addRow(obj);

                                Object o = new Object();


                        }

لماذا عند الضغط عليه يظهر الكتابة ولا يغير الحالة ؟؟

كيف اجعله اذا ضغط عليه يعدل الحالة اي يزيل اختيارة وكيف اقرء الاكشن منه ؟؟؟

اي اذا اردت ان اخزن الاسئلة التي عليها صح كيف استطيع ذلك

هذا هو الملف الخاص به

post-218481-008315900 1327588063_thumb.j

select_multible.java

المرفقات
1-26-2012 04-22-33 م.jpg
#19

كالعاده مش عارف اعدل فالكود بتاعك لانه مخربط كتير

لكن انا عملت لك كود بسيط كدا ممكن تشوفيه وبعدين تعدلى ف الكود بتاعك

import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Com.JKelany
 */
public class TableModel extends DefaultTableModel {

    Class tableClasses[] = new Class[]{
        String.class, String.class, String.class, String.class, Boolean.class
    };

    public TableModel(Object[][] data, Object[] columnNames) {
        super(data, columnNames);
    }

    @Override
    public Class<?> getColumnClass(int columnIndex) {
        return tableClasses[columnIndex];
    }

    @Override
    public boolean isCellEditable(int row, int column) {
        if (column == 4) {
            return true;
        } else {
            return false;
        }
    }
}

import data.Connect;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JTable;

/**
 *
 * @author Com.JKelany
 */
public class LoadDataToTable extends JFrame {

    private JTable dataTable;
    private TableModel tableModel;

    public LoadDataToTable() {
        dataTable = new JTable();
        loadTableData();
        add(dataTable);
    }

    private void loadTableData() {
        ArrayList<String> list = Connect.qustion;

        int numberOfColumns = 5;
        Object[][] data = new Object[list.size()][numberOfColumns];
        for (int i = 0; i < data.length; i++) {
            Object[] row = new Object[numberOfColumns];
            row[0] = Connect.qustion.get(i);
            row[1] = Connect.Answer.get(i);
            row[2] = Connect.level.get(i);
            row[3] = Connect.time.get(i);
            row[4] = true;
            data = row;
        }

        tableModel = new TableModel(data, new String[]{"Qustion", "Answer", "level", "Time", "Selected"});
        dataTable.setModel(tableModel);
    }

    public static void main(String[] args) {
        new Connect();

        LoadDataToTable f = new LoadDataToTable();
        f.setExtendedState(JFrame.MAXIMIZED_BOTH);
        f.setTitle("Load data to table");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }
}

بالتوفيق ان شاء الله

Software Developer
Mahmoudkelany.com


 

#20

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

عند اضافة

	public class CustomTableCellRenderer extends DefaultTableCellRenderer{
		public Component getTableCellRendererComponent (JTable table, Object obj, boolean isSelected, boolean hasFocus, int row, int column) {
			Component cell = super.getTableCellRendererComponent(table, obj, isSelected, hasFocus, row, column);
			if (isSelected) {
				cell.setBackground(Color.green);
			} 
			else {
				if (row % 2 == 0) {
					cell.setBackground(new Color(160,185,255));
				}
				else {
					cell.setBackground(Color.white);
				}
			}
			return cell;
		}
	}

عاد الى سابق عهده لماذا ؟؟؟؟؟اما اذا شلته بيشتغل تمام

ما المشكلة هادا الكلاس يغير الوان الصفوف

  for(int j=0;j<5;j++){

                    	TableColumn	tcol = dataTable.getColumnModel().getColumn(j);
	                     	tcol.setCellRenderer(new CustomTableCellRenderer());
                   }

وايضا اذا حاولت اضافة

JScrollPane scrollPane = new JScrollPane(dataTable);        // Make scrollpane with table
        f.getContentPane().add(scrollPane, BorderLayout.CENTER);
        JPanel s=new JPanel(new BorderLayout(10,10));
       s.add(new JLabel(new ImageIcon(getClass().getResource("image/user_header.jpg")) ), BorderLayout.NORTH);
        f.getContentPane().add(s, BorderLayout.NORTH);

لا يعمل الا اذا شلت ال

 s.add(new JLabel(new ImageIcon(getClass().getResource("image/user_header.jpg")) ), BorderLayout.NORTH

اما بوجودها يعطي خطا

data project\LoadDataToTable.java:71: non-static method getClass() cannot be referenced from a static context
        s.add(new JLabel(new ImageIcon(getClass().getResource("image/user_header.jpg")) ), BorderLayout.NORTH);

تم تعديل هذه المشاركة بواسطة ريحانة الاقصى في 27 يناير 2012 في 03:03

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