الدرس التاسع عشر by : emad@deyaa.org

 سوينج Swingانشاء واجهة بسيطة للمستخدم بواسطة

الاهداف

ان يستعمل المتدرب واجهة مستخدم رسومية
ان يستعمل المتدرب مكونات واجهة
ان يضع المتدرب المكونات على الشاشة
ان يضع المتدرب المكونات ضمن مكونات اخرى
ان يستعمل المتدرب ادارة التخطيط لتنظيم الواجهة
ان ينظم المكونات ضمن شبكة
ان يستعمل حقول التسمية وحقول النصوص

ان يجرب المتدرب الواجهة


مقدمة 

نعرف ان نظام التشغيل الراحل دوس من الانظمة التي تعمل من سطر الاوامر ومن يوم ان وضعت شركة ابل ماكنتوش نظام واجهة المستخدم الرسومية وتغير شكل العالم ثم تلتها شركة ميكروسوفت بنظام الويندوز الاشهر عالميا الذي اصبح معروفا في جميع انحاء العالم من السويد الى جنوب افريقيا ومن بنجلاديش الى ميامي ولقد وضعت شركة صن ميكروسيستيمز من اللحظة الاولى واجهة للمستخدم للتعامل مع الاجهزة التفاعلية ونرى اليوم ما وصلت اليه اجهزة المحمول وخاصة النوكيا من واجهة مستخدم رسومية وضعتها له الجافا 

ودرس اليوم قائم على كيفية تصميم واجهة مستخدم رسومية 


العرض 

اولا المصطلحات 

Graphical User Interface  واجهة المستخدم الرسومية 

Abstract Windowing Toolkit انشاء النوافذ المجردة 

 

من المعروف ان لغة الجافا لغة مستقلة عن القاعدة التصميمية ولذلك يمكن كتابة برامج مرنة تتوافق مع اي نظام تشغيل توضع فيه وهذه من مميزات الجافا التي تميزها عن اي لغة اخرى ويحضرني هنا مثال مع الفارق اقصد ان لغة الجافا لديها من المرونة قدرا كبيرا يمكنها من التوافق مع اي نظام تشغيل وكأنها جزء منه وقد يقول البعض على سبيل التشبيه انها مثل الحرباء ونقول الى حد ما ولكن مع البعد عن الصورة البغيضة للحرباء المتمثل في التلوين حسب الموضع يعني النفاق الملون ولكن في حالة الجافا نسميه مرونة وفي البداية كان المتحكم في ذلك مجموعة من الفئات تسمى عدة انشاء الاطارات المجردة حيث انها عبارة عن مجموعة من الفئات المصممة لتعمل مع كل القواعد التصميمية ولذلك يتمكن المبرمجون في كافة انحاء العالم من كتابة برامج تنشر على الشبكة الدولية لتعمل من خلال اجهزة كمبيوتر مختلفة في انظمة التشغيل ومتصفحات الانترنت ولكن برمجيات الجافا تتوائم معها جميعا وحديثا قدمت شركة صن مجموعة من الفئات تسمى سوينج وهي مجموعة من الفئات المحسنة التي تؤثر على كيفية ظهور واجهة المستخدم وعملها والتحكم بها وتشتمل على كل ما يحتاجه المبرج لكتابة برامج تستعمل واجهة مستخدم رسومية مثل 

أزرار ومربعات تأكيد 

حقول نصوص 

مربعات حوار 

قوائم منسدلة 

فئات تتعامل مع الخطوط والالوان والرسوم والاستجابة لاحداث المستخدم 

 

اولا حقل النص وحقل التسمية 

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

public class Text extends JApplet {
JTextArea comments = new JTextArea();
JLabel l = new JLabel(" ");

public void init() {
BorderLayout flo = new BorderLayout();
Container pane = getContentPane();
comments.setRows(10);
comments.setColumns(50);
pane.setLayout(flo);
pane.add(comments, BorderLayout.CENTER);
pane.add(l, BorderLayout.EAST);
pane.add(l, BorderLayout.WEST);
pane.add(l, BorderLayout.NORTH);
pane.add(l, BorderLayout.SOUTH);
setContentPane(pane);
}
}


 

 

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

public class LabelText extends JApplet {
JLabel pageLabel = new JLabel("عنوان مزقع انترنت ", JLabel.RIGHT);
JTextField pageAddress = new JTextField(20);

public void init() {
FlowLayout flo = new FlowLayout();
Container pane = getContentPane();
int height = pageLabel.getPreferredSize().height;
int width = pageLabel.getPreferredSize().width;
Dimension dim = new Dimension(width+10, height);
pageLabel.setPreferredSize(dim);
pane.setLayout(flo);
pane.add(pageLabel);
pane.add(pageAddress);
setContentPane(pane);
}
}

ثانيا : مربعات التحرير والسرد 

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

public class CheckBoxes extends JApplet {
JCheckBox math = new JCheckBox("درجة الرياضيات ", true);
JCheckBox physics = new JCheckBox("درجة الفيزياء ", true);
JCheckBox chemis = new JCheckBox("درجة الكيمياء", false);
JCheckBox biology = new JCheckBox("درجة الاحياء ", false);

public void init() {
FlowLayout flo = new FlowLayout();
Container pane = getContentPane();
ButtonGroup sub = new ButtonGroup();
sub.add(physics);
sub.add(chemis);
sub.add(biology);
pane.setLayout(flo);
pane.add(math);
pane.add(physics);
pane.add(chemis);
pane.add(biology);
setContentPane(pane);
}
}

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

 


import java.awt.*;
import javax.swing.*;
// j2sdk1.4.2_13
public class Combo extends JApplet {
JComboBox profession = new JComboBox();

public void init() {
FlowLayout flo = new FlowLayout();
Container pane = getContentPane();
profession.addItem("جزار");
profession.addItem("خباز");
profession.addItem("فطايري");
profession.addItem("زهار");
profession.addItem("جنايني");
profession.addItem("عطار");
profession.setEditable(true);
pane.setLayout(flo);
pane.add(profession);
setContentPane(pane);
}
}

ويكون الناتج 

 

ادارة التخطيط 

 

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

public class Color extends JApplet {
JButton redButton = new JButton("أحمر");
JButton blueButton = new JButton("أزرق");
JButton greenButton = new JButton("أخضر");
JButton yellowButton = new JButton("أصفر");
JButton roseButton = new JButton("وردي");

public void init() {
Container pane = getContentPane();
FlowLayout flo = new FlowLayout();
pane.setLayout(flo);
pane.add(redButton);
pane.add(blueButton);
pane.add(greenButton);
pane.add(yellowButton);
pane.add(roseButton);
}
}

 


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

public class Color2 extends JApplet {
JButton redButton = new JButton("أحمر");
JButton blueButton = new JButton("أزرق");
JButton greenButton = new JButton("أخضر");
JButton yellowButton = new JButton("أصفر");
JButton roseButton = new JButton("وردي");

public void init() {
Container pane = getContentPane();
GridLayout flo = new GridLayout(2, 3);
pane.setLayout(flo);
pane.setLayout(flo);
pane.add(redButton);
pane.add(blueButton);
pane.add(greenButton);
pane.add(yellowButton);
pane.add(roseButton);
}
}

 

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

public class Color3 extends JApplet {
JButton redButton = new JButton("أحمر");
JButton blueButton = new JButton("أزرق");
JButton greenButton = new JButton("أخضر");
JButton yellowButton = new JButton("أصفر");
JButton roseButton = new JButton("وردي");

public void init() {
Container pane = getContentPane();
BorderLayout crisisLayout = new BorderLayout();
pane.setLayout(crisisLayout);
pane.add(redButton, BorderLayout.NORTH);
pane.add(blueButton, BorderLayout.SOUTH);
pane.add(greenButton, BorderLayout.EAST);
pane.add(yellowButton, BorderLayout.WEST);
pane.add(roseButton, BorderLayout.CENTER);
setContentPane(pane);
}
}

 

نلاحظ مدى مرونة الجافا في التنويعواعادة ترتيب البريمج 

الى اللقاء في الدرس القادم مع تحيات عماد الدين 

مع تحيات 

doaa & aliaa 

جميع الحقوق محفوظة لموقع المدرس العربي 

www.deyaa.org