ريحانة الاقصى كتب:اوكي عدل عليه
بس رجاءا حطلي كومنت مكان ما بتعدل
انا بحاول لسه والله
لكن كما ذكرت ليكى قبل كدا ان سوء تنظيم الكود
ينتج عنه اخطاء واشياء كثيره وعدم ترابط مع المتغيرات واسمائها
لكن ان شاء الله هيتعمل
ريحانة الاقصى كتب:اوكي عدل عليه
بس رجاءا حطلي كومنت مكان ما بتعدل
انا بحاول لسه والله
لكن كما ذكرت ليكى قبل كدا ان سوء تنظيم الكود
ينتج عنه اخطاء واشياء كثيره وعدم ترابط مع المتغيرات واسمائها
لكن ان شاء الله هيتعمل
اتفضلى اختى الكريمه
انا عملت فيه شويه تعديلات تانيه
يا ريت لو فيه اى مشكله تبلغينا
ويارب يكون كدا تمام :)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
/**
*
* @author Mahmoud Kelany
*/
public class HomeWork extends JFrame implements ActionListener {
private DataShare dShare;
private Thread producerThread;
private Thread consumerThread;
static private boolean isRun;
/////////
private JButton startButton = new JButton("Start");
private JButton endButton = new JButton(" End ");
private JLabel titleLabel = new JLabel(" producer & consumer problem ");
private JLabel l2 = new JLabel(" ");
private JLabel l3 = new JLabel(" ");
////////
private JTextField firstTextField = new JTextField(6);
private JTextField secondTextField = new JTextField(6);
private JTextField thirdTextField = new JTextField(6);
private JTextField fourthTextField = new JTextField(6);
public HomeWork() {
setLayout(new FlowLayout(FlowLayout.LEFT, 5, 5));
JPanel titledPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
titledPanel.add(titleLabel);
titledPanel.setBorder(new TitledBorder(""));
JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 15, 5));
buttonPanel.add(l2);
buttonPanel.add(startButton);
buttonPanel.add(endButton);
buttonPanel.add(l3);
buttonPanel.setBorder(new TitledBorder(""));
JPanel textFieldPanel = new JPanel(new GridLayout(4, 1, 5, 5));
textFieldPanel.add(firstTextField);
textFieldPanel.add(secondTextField);
textFieldPanel.add(thirdTextField);
textFieldPanel.add(fourthTextField);
textFieldPanel.setBorder(new TitledBorder(" "));
JPanel p1 = new JPanel(new FlowLayout(FlowLayout.CENTER, 100, 5));
p1.add(textFieldPanel);
add(titledPanel);
add(buttonPanel);
add(p1);
startButton.addActionListener(this);
endButton.addActionListener(this);
/////
dShare = new DataShare(4);
endButton.setEnabled(false);
firstTextField.setEditable(false);
secondTextField.setEditable(false);
thirdTextField.setEditable(false);
fourthTextField.setEditable(false);
}
public static void main(String[] args) {
HomeWork frame = new HomeWork();
frame.setLocation(200, 200);
frame.setTitle("homwork # 1");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setSize(320, 300);
}
public void setTextFields(int value, int textFieldNumber) {
if (textFieldNumber == 0) {
firstTextField.setText(value + "");
} else if (textFieldNumber == 1) {
secondTextField.setText(value + "");
} else if (textFieldNumber == 2) {
thirdTextField.setText(value + "");
} else if (textFieldNumber == 3) {
fourthTextField.setText(value + "");
}
}
public void actionPerformed(ActionEvent evt) {
if (evt.getSource() == startButton) {
isRun = true;
producerThread = new Thread(new Producer(dShare));
consumerThread = new Thread(new Consumer(dShare));
consumerThread.start();
producerThread.start();
startButton.setEnabled(false);
endButton.setEnabled(true);
} else if (evt.getSource() == endButton) {
try {
endButton.setEnabled(false);
startButton.setEnabled(true);
isRun = false;
consumerThread.join();
producerThread.join();
} catch (InterruptedException ex) {
}
}
}
class DataShare {
private int[] array;
private int count = 0, in = 0, out = 0;
DataShare(int size) {
array = new int[size];
}
public synchronized void put(int c) {
while (count == array.length) {
try {
wait();
} catch (InterruptedException e) {
}
}
array[in] = c;
setTextFields(array[in], in);
try {
wait(200);
} catch (InterruptedException ex) {
}
System.out.println("produecer--array[ " + in + "]=" + array[in] + " ...");
in = (in + 1) % array.length;
count++;
try {
wait(1000);
} catch (InterruptedException e) {
}
notify();
}
public synchronized void get() {
while (count == 0) {
try {
wait();
} catch (InterruptedException e) {
}
}
setTextFields(0, out);
try {
wait(1000);
} catch (InterruptedException ex) {
}
System.out.println("consumer --array[ " + out + "]=" + 0 + " ...");
try {
wait(200);
} catch (InterruptedException e) {
}
out = (out + 1) % array.length;
count--;
notify();
}
}
class Producer implements Runnable {
private DataShare array;
Producer(DataShare b) {
array = b;
}
public void run() {
while (isRun == true) {
array.put(1);
}
}
}
class Consumer implements Runnable {
private DataShare array;
Consumer(DataShare b) {
array = b;
}
public void run() {
while (isRun == true) {
array.get();
}
}
}
}بالتوفيق :)
تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 14 أكتوبر 2010 في 17:50
Mahmoud Kelany كتب:اتفضلى اختى الكريمه
انا عملت فيه شويه تعديلات تانيه
يا ريت لو فيه اى مشكله تبلغينا
ويارب يكون كدا تمام :)
import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; /** * * @author Mahmoud Kelany */ public class HomeWork extends JFrame implements ActionListener { private DataShare dShare; private Thread producerThread; private Thread consumerThread; static private boolean isRun; ///////// private JButton startButton = new JButton("Start"); private JButton endButton = new JButton(" End "); private JLabel titleLabel = new JLabel(" producer & consumer problem "); private JLabel l2 = new JLabel(" "); private JLabel l3 = new JLabel(" "); //////// private JTextField firstTextField = new JTextField(6); private JTextField secondTextField = new JTextField(6); private JTextField thirdTextField = new JTextField(6); private JTextField fourthTextField = new JTextField(6); public HomeWork() { setLayout(new FlowLayout(FlowLayout.LEFT, 5, 5)); JPanel titledPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); titledPanel.add(titleLabel); titledPanel.setBorder(new TitledBorder("")); JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 15, 5)); buttonPanel.add(l2); buttonPanel.add(startButton); buttonPanel.add(endButton); buttonPanel.add(l3); buttonPanel.setBorder(new TitledBorder("")); JPanel textFieldPanel = new JPanel(new GridLayout(4, 1, 5, 5)); textFieldPanel.add(firstTextField); textFieldPanel.add(secondTextField); textFieldPanel.add(thirdTextField); textFieldPanel.add(fourthTextField); textFieldPanel.setBorder(new TitledBorder(" ")); JPanel p1 = new JPanel(new FlowLayout(FlowLayout.CENTER, 100, 5)); p1.add(textFieldPanel); add(titledPanel); add(buttonPanel); add(p1); startButton.addActionListener(this); endButton.addActionListener(this); ///// dShare = new DataShare(4); endButton.setEnabled(false); firstTextField.setEditable(false); secondTextField.setEditable(false); thirdTextField.setEditable(false); fourthTextField.setEditable(false); } public static void main(String[] args) { HomeWork frame = new HomeWork(); frame.setLocation(200, 200); frame.setTitle("homwork # 1"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); frame.setSize(320, 300); } public void setTextFields(int value, int textFieldNumber) { if (textFieldNumber == 0) { firstTextField.setText(value + ""); } else if (textFieldNumber == 1) { secondTextField.setText(value + ""); } else if (textFieldNumber == 2) { thirdTextField.setText(value + ""); } else if (textFieldNumber == 3) { fourthTextField.setText(value + ""); } } public void actionPerformed(ActionEvent evt) { if (evt.getSource() == startButton) { isRun = true; producerThread = new Thread(new Producer(dShare)); consumerThread = new Thread(new Consumer(dShare)); consumerThread.start(); producerThread.start(); startButton.setEnabled(false); endButton.setEnabled(true); } else if (evt.getSource() == endButton) { try { endButton.setEnabled(false); startButton.setEnabled(true); isRun = false; consumerThread.join(); producerThread.join(); } catch (InterruptedException ex) { } } } class DataShare { private int[] array; private int count = 0, in = 0, out = 0; DataShare(int size) { array = new int[size]; } public synchronized void put(int c) { while (count == array.length) { try { wait(); } catch (InterruptedException e) { } } array[in] = c; setTextFields(array[in], in); try { wait(200); } catch (InterruptedException ex) { } System.out.println("produecer--array[ " + in + "]=" + array[in] + " ..."); in = (in + 1) % array.length; count++; try { wait(1000); } catch (InterruptedException e) { } notify(); } public synchronized void get() { while (count == 0) { try { wait(); } catch (InterruptedException e) { } } setTextFields(0, out); try { wait(1000); } catch (InterruptedException ex) { } System.out.println("consumer --array[ " + out + "]=" + 0 + " ..."); try { wait(200); } catch (InterruptedException e) { } out = (out + 1) % array.length; count--; notify(); } } class Producer implements Runnable { private DataShare array; Producer(DataShare b) { array = b; } public void run() { while (isRun == true) { array.put(1); } } } class Consumer implements Runnable { private DataShare array; Consumer(DataShare b) { array = b; } public void run() { while (isRun == true) { array.get(); } } } }بالتوفيق :)
لما شغلت البرنامج طلعلي هاي في مكان الطباعة السابق
شو هاد
--------------------Configuration: <Default>--------------------
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)
where options include:
-client to select the "client" VM
-server to select the "server" VM
-hotspot is a synonym for the "client" VM [deprecated]
The default VM is client.
-cp <class search path of directories and zip/jar files>
-classpath <class search path of directories and zip/jar files>
A ; separated list of directories, JAR archives,
and ZIP archives to search for class files.
-D<name>=<value>
set a system property
-verbose[:class|gc|jni]
enable verbose output
-version print product version and exit
-version:<value>
require the specified version to run
-showversion print product version and continue
-jre-restrict-search | -jre-no-restrict-search
include/exclude user private JREs in the version search
-? -help print this help message
-X print help on non-standard options
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
enable assertions
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
disable assertions
-esa | -enablesystemassertions
enable system assertions
-dsa | -disablesystemassertions
disable system assertions
-agentlib:<libname>[=<options>]
load native agent library <libname>, e.g. -agentlib:hprof
see also, -agentlib:jdwp=help and -agentlib:hprof=help
-agentpath:<pathname>[=<options>]
load native agent library by full pathname
-javaagent:<jarpath>[=<options>]
load Java programming language agent, see java.lang.instrument
-splash:<imagepath>
show splash screen with specified image
Process completed.
ريحانة الاقصى كتب:لما شغلت البرنامج طلعلي هاي في مكان الطباعة السابق
شو هاد
لا الكود شغال سليم جدا
يمكنك تحميل المشروع كامل من هنا
لو عاوزه اعمل لك فيديو تشغيل للبرنامج
والبرنامج يعمل بشكل جيد
Mahmoud Kelany كتب:لا الكود شغال سليم جدا
يمكنك تحميل المشروع كامل من هنا
لو عاوزه اعمل لك فيديو تشغيل للبرنامج
والبرنامج يعمل بشكل جيد
شكرا جزيلا لك
فعلا شغل رائع
الله يجعلو في ميزان حسناتك يا رب
ريحانة الاقصى كتب:شكرا جزيلا لك
فعلا شغل رائع
الله يجعلو في ميزان حسناتك يا رب
العفو تحت امرك
الحمدلله على كل شىء :)
انا مش رضيت اقسمه ليكى
كفايه التعديلات اللى انا عملتها
اقسمه كمان :D
بس على فكرا تقسيم الكود بيكون احسن فالفهم والتعامل وتصحيح الاخطاء
بالتوفيق :)
Mahmoud Kelany كتب:العفو تحت امرك
الحمدلله على كل شىء :)
انا مش رضيت اقسمه ليكى
كفايه التعديلات اللى انا عملتها
اقسمه كمان :D
بس على فكرا تقسيم الكود بيكون احسن فالفهم والتعامل وتصحيح الاخطاء
بالتوفيق :)
لا خلص شكرا
انا ما بعرف اتعامل مع كودات مقسمة هيك اتعودت
بس ان شاء الله بتطور
ريحانة الاقصى كتب:لا خلص شكرا
انا ما بعرف اتعامل مع كودات مقسمة هيك اتعودت
بس ان شاء الله بتطور
لالا طبعا التعامل مع اكود مقسمه بيكون احسن
ولازم تتعلمى كدا
انتى اخدتى object-oriented
لو ااخدتيها يقبى لازم تتعاملى وتقسمى كودك
علشان المشاريع الكبيره
والتقسيم اسهل بكتير :D
Mahmoud Kelany كتب:لالا طبعا التعامل مع اكود مقسمه بيكون احسن
ولازم تتعلمى كدا
انتى اخدتى object-oriented
لو ااخدتيها يقبى لازم تتعاملى وتقسمى كودك
علشان المشاريع الكبيره
والتقسيم اسهل بكتير :D
خلص ان شاء الله رح اصير اقسم البرامج
وكمان شكرا مرة تانية ع المساعدة
ان شاء الله بعد 4 سنين لما اخلص دراسة رح اصير اعمل متلك واساعد الناس في حلولهم
ريحانة الاقصى كتب:خلص ان شاء الله رح اصير اقسم البرامج
وكمان شكرا مرة تانية ع المساعدة
ان شاء الله بعد 4 سنين لما اخلص دراسة رح اصير اعمل متلك واساعد الناس في حلولهم
ان شاء الله
وهذا هو المشروع مقسم ان كنتى تردين الاطلاع عليه
وترين سهوله عمل كل شىء فى ملف خاص به
لتحديد ان يقع الخطأ بسهوله
وكيفيه التعامل مع التعديلات بطريقه اسهل
4 سننين ؟؟؟؟
ليه
كتير اوووى :D
انا بأدرس مثلك بالظبط :)
المساعده ما لها وقت
وقت ما تلاقى نفسك تقدرى تساعدى حد ساعديه :)
بالتوفيق
Mahmoud Kelany كتب:ان شاء الله
وهذا هو المشروع مقسم ان كنتى تردين الاطلاع عليه
وترين سهوله عمل كل شىء فى ملف خاص به
لتحديد ان يقع الخطأ بسهوله
وكيفيه التعامل مع التعديلات بطريقه اسهل
4 سننين ؟؟؟؟
ليه
كتير اوووى :D
انا بأدرس مثلك بالظبط :)
المساعده ما لها وقت
وقت ما تلاقى نفسك تقدرى تساعدى حد ساعديه :)
بالتوفيق
اها ان شاء الله
بس انا هلا ما عندي اشي اساعد فيه
الكود اللي اعملتو كان مخربط كتير الله يعينك كيف فهمتو؟؟
ريحانة الاقصى كتب:اها ان شاء الله
بس انا هلا ما عندي اشي اساعد فيه
الكود اللي اعملتو كان مخربط كتير الله يعينك كيف فهمتو؟؟
ان شاء الله :)
ههههههههههه
فعلا كان مخربط على الاخر
بس فهمته ازاى
هاقولك حاضر
مشيت مع الكود جزئيه جزئيه
وعرفت ترتيبها ازاى
والحاجات التى عاوز افهمها منه فهمتها
يعنى انا مش يخصنى كيفيه عمل put , get لانى لحد الان مش فاهم منها حاجه :D
لكن اهم حاجه عندى انى اظهر الناتج على الـ Frame
على فكرا لو معيد عندنا فالكليه شاف الكود بالشكل دا
بيرمى الجهاز ف وشنا :D
هههههههههه
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…