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

Code For Cpu Sheduling Algorithm ?

بدأه mr.beshoy في 25 مارس 2009 · 13 رد · 978 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلام للجميع

انا هنا بعمل كود لأول الجورزم متعلق بجدولة العمليات فى ال cpu

و هو

انا هنا فى الكود لما بضغط على زر ok

عاوز يظهرلى panel

عليها

label (name) نسيب مساحة كده و نضع ال field >>>> label(time) مساحة field

و ده عاوزه يكون باستخدام ال Gridlayout

عشان يظهروا تحت بعض

انا بشتغل فى ال for loop من 0 إلى رقم العمليات الى انا مدخلها فى الأول

هتشوفوا ال for loop فى ال actioperformed

المشكلة انه بيظهر لى label(name) >> field مرة واحدة فقط

النوع اللي بعمل عليه sheduling

First-Come First-Served Scheduling

الكود اهو

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class RandomTest extends JFrame implements ActionListener {

	private JPanel upperpanel,  processnum_panel,  okpanel,  nameprocesspanel,  timeprocesspanel,  mainpanel;
	private JLabel processnum_label;
	private JTextField processnum_field;
	private String[] name;
	private JLabel nameprocess,  timeprocess;
	private JTextField nameField,  timefield;
	private JButton ok;

	public RandomTest() {

		upperpanel = new JPanel(new GridLayout(1, 0));

		processnum_panel = new JPanel(new FlowLayout(FlowLayout.LEFT));
		processnum_label = new JLabel("Enter number of process");
		processnum_field = new JTextField(10);

		okpanel = new JPanel();
		ok = new JButton("ok");
		ok.addActionListener(this);
		okpanel.add(ok);

		processnum_panel.add(processnum_label);
		processnum_panel.add(processnum_field);


		upperpanel.add(processnum_panel);
		upperpanel.add(okpanel);

		nameprocesspanel = new JPanel();
		nameprocess = new JLabel("name");
		nameField = new JTextField(10);

		timeprocesspanel = new JPanel();
		timeprocess = new JLabel("time");
		timefield = new JTextField(10);

		upperpanel.setBorder(BorderFactory.createLineBorder(Color.BLUE, 5));

		getContentPane().add(upperpanel, BorderLayout.NORTH);
	}

	public static void main(String[] args) {
		Dimension dimScreen = Toolkit.getDefaultToolkit().getScreenSize();
		int w = 600, h = 300;
		int x = (int) (dimScreen.getWidth() - w) / 2;
		int y = (int) (dimScreen.getHeight() - h) / 2;
		RandomTest frame = new RandomTest();
		frame.setTitle("cpu sheduling algorithm");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
		frame.setBounds(x, y, w, h);

	}

	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == ok) {
			mainpanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
			for (int i = 0; i <= processnum_field.getText().length(); ++i) {

				nameprocesspanel.setLayout(new GridLayout(i + 1, 0));
				nameprocesspanel.add(nameprocess);
				nameprocesspanel.add(nameField);

				timeprocesspanel.setLayout(new GridLayout(i + 1, 0));
				timeprocesspanel.add(timeprocess);
				timeprocesspanel.add(timefield);

				mainpanel.add(nameprocesspanel);
				getContentPane().add(mainpanel, BorderLayout.CENTER);
			}


		}
	}
}

تم تعديل هذه المشاركة بواسطة علاء الصالحي في 25 مارس 2009 في 11:39 — السبب: حذف الكود الزائد

#2

السلام عليكم

أي منظم لا يفهم أن تضيفه له المكون أكثر من مرة

لهذا يجب أن يكون لديك مجموعة من العناوين labels ومربعات النص TextFields

نقطة أخيرة عندما تعدل على أي شاشة في أثناء تشغيلها يجب أن تستخدم الدالة validate لإظهار التعديل

وهذه الشيفرة بعد التعديل

package scheduler;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class FirstComeFirstServe extends JFrame implements ActionListener {

	private JPanel upperpanel,  processnum_panel,  okpanel,  nameprocesspanel,  timeprocesspanel,  mainpanel;
	private JLabel processnum_label;
	private JTextField processnum_field;
	private String[] name;
	private JLabel nameprocess[],  timeprocess[];
	private JTextField nameField[],  timefield[];
	private JButton ok;

	public FirstComeFirstServe() {

		upperpanel = new JPanel(new GridLayout(1, 0));

		processnum_panel = new JPanel(new FlowLayout(FlowLayout.LEFT));
		processnum_label = new JLabel("Enter number of process");
		processnum_field = new JTextField(10);

		okpanel = new JPanel();
		ok = new JButton("ok");
		ok.addActionListener(this);
		okpanel.add(ok);

		processnum_panel.add(processnum_label);
		processnum_panel.add(processnum_field);


		upperpanel.add(processnum_panel);
		upperpanel.add(okpanel);

		timeprocesspanel = new JPanel();


		upperpanel.setBorder(BorderFactory.createLineBorder(Color.BLUE, 5));

		getContentPane().add(upperpanel, BorderLayout.NORTH);
	}

	public static void main(String[] args) {
		Dimension dimScreen = Toolkit.getDefaultToolkit().getScreenSize();
		int w = 600, h = 300;
		int x = (int) (dimScreen.getWidth() - w) / 2;
		int y = (int) (dimScreen.getHeight() - h) / 2;
		FirstComeFirstServe frame = new FirstComeFirstServe();
		frame.setTitle("cpu sheduling algorithm");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
		frame.setBounds(x, y, w, h);

	}

	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == ok) {
			int processCount=Integer.parseInt(processnum_field.getText());
			nameprocess=new JLabel[processCount];
			timeprocess=new JLabel[processCount];
			nameField=new JTextField[processCount];
			timefield=new JTextField[processCount];
			mainpanel = new JPanel();
			mainpanel.setLayout(new GridLayout(0 , 4));
			for (int i = 0; i <processCount; ++i) {
				nameField = new JTextField(10);
				timefield = new JTextField(10);
				nameprocess=new JLabel("name");
				timeprocess=new JLabel("time");
				mainpanel.add(nameprocess);
				mainpanel.add(nameField);
				mainpanel.add(timeprocess);
				mainpanel.add(timefield);

				System.out.println("hi");
			}
			getContentPane().add(mainpanel, BorderLayout.CENTER);
		   //validate();
		}
	}
}
حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#3

سلام

شوف المشكلة فى كود

غريبة رغم ان الكتابة مظبوطة و منطقية

بيعترض على هذا السطر

 int processCount=Integer.parseInt(processnum_field.getText());

بيقول

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""

لماذا ؟؟؟

لسة مشفتش شكل الانترفيس بتاعك :rolleyes:

#4

ممممممممممممممممممممم

عند أي سطر تحدث المشكلة؟؟

على كل حال هل تدخل رقم أم حروف في الحقل؟؟

عندي لم ألاحظ أي مشاكل

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#5

عند هذا السطر

 int processCount=Integer.parseInt(processnum_field.getText());

و انى أُدخل رقم ليس حرفاً

فما المشكلة إذن ؟

#6

أنت لم تدخل أي قيمة؟؟؟

في حقل الإدخال

عدا عن ذلك ستكون مشكلة في نفس بيئة العمل

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

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#7

ماذا تقصد ببيئة العمل

تقصد نظام التشغيل أم نتبينز أم ماذا ؟؟؟

عموما سأرى الأمر غداً عصراً أكون انتهيت من امتحان عبيط شوية عندنا

شكرا

#8

بيئة العمل هي البيئة التي تقوم فيها بتشغيل برامجك

وتتضمن كل شيء بما في ذلك نظام التشغيل وبيئة التطوير IDE ولغة التطوير والعتاد التي تعمل عليه

تستطيع القول بأنه مفهوم مطاط بعض الشيء

على كل حال في انتظارك

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#9

كله تمام اشتغل شكلى مكنتش بدخل أى رقم فى ال textfield :lol:

المهم

أنا جيت ضفت جزء انى لما ادخل بيانات و أضغط على زر display ( تم إضافته كما سترى فى الكود )

يظهر textarea فيها البيانات الى تم إدخالها فى الtextfields

و كتبت الكود بتعاها ومتاكد منه بس بردو ما بيظهر ال textarea

و كمان أنا وضعت ال name و ال field بتاعاتها فى بانل مستقلة

و ال time و ال field بتاعتها فى بانل مستقلة

و هما الأتنين فى mainPanel

أنا لما كنت بدخل مثل عاوز 60 عملية كانوا بيظهروا

لما بدخل 1000 عملية لايظهر شئ فقررت أضيف على كل بانل ما يسمى بال JScrollBar

و لكن لم تفعل شئ

ادى الكود المحدث

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class FirstComeFirstServe extends JFrame implements ActionListener {

	private JPanel upperpanel,  processnum_panel,  okpanel,  nameprocesspanel,  timeprocesspanel,  mainpanel;
	private JLabel processnum_label;
	private JTextField processnum_field;
	private String[] name;
	private JLabel nameprocess[],  timeprocess[];
	private JTextField nameField[],  timefield[];
	private JButton ok;

	public FirstComeFirstServe() {

		upperpanel = new JPanel(new GridLayout(1, 0));

		processnum_panel = new JPanel(new FlowLayout(FlowLayout.LEFT));
		processnum_label = new JLabel("Enter number of process");
		processnum_field = new JTextField(10);

		okpanel = new JPanel();
		ok = new JButton("ok");
		ok.addActionListener(this);
		okpanel.add(ok);

		processnum_panel.add(processnum_label);
		processnum_panel.add(processnum_field);


		upperpanel.add(processnum_panel);
		upperpanel.add(okpanel);

		timeprocesspanel = new JPanel();


		upperpanel.setBorder(BorderFactory.createLineBorder(Color.BLUE, 5));

		getContentPane().add(upperpanel, BorderLayout.NORTH);
	}

	public static void main(String[] args) {
		Dimension dimScreen = Toolkit.getDefaultToolkit().getScreenSize();
		int w = 600, h = 300;
		int x = (int) (dimScreen.getWidth() - w) / 2;
		int y = (int) (dimScreen.getHeight() - h) / 2;
		FirstComeFirstServe frame = new FirstComeFirstServe();
		frame.setTitle("cpu sheduling algorithm");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
		frame.setBounds(x, y, w, h);

	}
	JScrollBar scrollbar = new JScrollBar();
	JButton display = new JButton("Display");
	JPanel buttonPanel = new JPanel();
	JTextArea area = new JTextArea();
	JPanel areaPanel=new JPanel();

	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == ok) {
			int processCount = Integer.parseInt(processnum_field.getText());
			nameprocess = new JLabel[processCount];
			timeprocess = new JLabel[processCount];
			nameField = new JTextField[processCount];
			timefield = new JTextField[processCount];


			buttonPanel = new JPanel();
			buttonPanel.add(display);

			mainpanel = new JPanel();
			mainpanel.setLayout(new GridLayout(0, 3));

			nameprocesspanel = new JPanel(new GridLayout(0, 2));
			timeprocesspanel = new JPanel(new GridLayout(0, 2));

			for (int i = 0; i < processCount; ++i) {

				nameprocess = new JLabel("name");
				nameField = new JTextField(10);
				nameprocesspanel.add(nameprocess);
				nameprocesspanel.add(nameField, scrollbar);
				mainpanel.add(nameprocesspanel, scrollbar);


				timeprocess = new JLabel("time");
				timefield = new JTextField(10);
				timeprocesspanel.add(timeprocess);
				timeprocesspanel.add(timefield, scrollbar);
				mainpanel.add(timeprocesspanel, scrollbar);
				mainpanel.add(buttonPanel);

				if (e.getSource() == display) {
					area.setText("The process" + nameField.getText() + "Take" + timefield.getText()+"millisecond");
					areaPanel.add(area);
					mainpanel.add(areaPanel);
				}
			}
			getContentPane().add(mainpanel, BorderLayout.CENTER);
			validate();

		}

	}
}

معلش استحملنى و أيضاً الشباب الأخرين يستحملونى

شكراً

#10

بالنسبة لموضوع الشريط المتحرك scroll Bar على اللائحة panel

هذا يحتاج إلى جهد كبير

يجب عليك أن تعيد بناء الدالة paint

وبعد تتبع وجدت أن الدالة paint غير موجودة في JSCrollPane

وإنما في الفئة JViewport

من هنا يمكنك البدء

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#11

مش مشكلة دلوقتى ال scrollBar

شكلك مكملتش قراية السوال بتاعى !!!

انا دلوقتى لما بضغط عى زر display مش بيظهرلى ال

textarea

ليه ؟؟

انظر لأخر كود تم وضعه هتلاقينى كاتب فى الأخر الجزء الخاص بهيك المهمة

شكرا

#12

JTextArea يظهر لكنك أضفت عليه بعض المكونات Component لهذا تلاحظ أنه غير فعال بالمرة

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#13

طب ايه الحل

أنا مش عارف

ياريت تساعدنى فيها

#14

ماهي وظيفة JTextArea هنا؟

هل هو متكرر لك عملية process أم أنه لجميع العمليات؟

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

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