الاهداف
ان يستعمل
المتدرب واجهة مستخدم رسومية
ان يستعمل المتدرب مكونات واجهة
ان يضع المتدرب المكونات على الشاشة
ان يضع المتدرب المكونات ضمن مكونات اخرى
ان يستعمل المتدرب ادارة التخطيط لتنظيم
الواجهة
ان ينظم المكونات ضمن شبكة
ان يستعمل حقول التسمية وحقول النصوص
ان يجرب المتدرب الواجهة
مقدمة
نعرف ان نظام
التشغيل الراحل دوس من الانظمة التي تعمل
من سطر الاوامر ومن يوم ان وضعت شركة ابل
ماكنتوش نظام واجهة المستخدم الرسومية
وتغير شكل العالم ثم تلتها شركة
ميكروسوفت بنظام الويندوز الاشهر عالميا
الذي اصبح معروفا في جميع انحاء العالم
من السويد الى جنوب افريقيا ومن بنجلاديش
الى ميامي ولقد وضعت شركة صن
ميكروسيستيمز من اللحظة الاولى واجهة
للمستخدم للتعامل مع الاجهزة التفاعلية
ونرى اليوم ما وصلت اليه اجهزة المحمول
وخاصة النوكيا من واجهة مستخدم رسومية
وضعتها له الجافا
ودرس اليوم قائم
على كيفية تصميم واجهة مستخدم رسومية
العرض
اولا المصطلحات
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);
}
}
نلاحظ مدى مرونة الجافا في
التنويعواعادة ترتيب البريمج
الى اللقاء في الدرس القادم
مع تحيات عماد الدين
مع تحيات