لمحة جافاوية 35: أيقونة في شريط المهام

السلام عليكم

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

في استخدامنا للحاسوب يمر علينا الكثير من الأشياء الجديدة
منها سطح المكتب وشريط المهام وقائمة ابدأ
والأيقونات والمجلدات والملفات وغيرها الكثير
اليوم أحدثكم عن شريط المهام system tray
أو Notification Area أو Taskbar Status Area
كلها أسماء لعملة واحدة وهي شريط المهام
أحياناً كثيرة نجد بعض البرامج عند إغلاقها لا تغلق
وإنما تصبح أيقونة صغيرة في شريط المهام
أنا احتجت لهذا في برنامج منبه الفجر خطوة على طريق مواعيدي
وقد قمت به وكرماً مني ومناً سأطلعكم على الطريقة
ولأني مللت الكلام كثيراً
سأترككم مع الشيفرة ثم أعود لكم لنتكلم عن ما قمت به

	public void systemTray() {

		if (SystemTray.isSupported()) {
		    final SystemTray tray = SystemTray.getSystemTray();
		    
		    Image image = Toolkit.getDefaultToolkit().getImage(url);
		    ActionListener exitListener = new ActionListener() {
		        public void actionPerformed(ActionEvent e) {
		            System.exit(0);
		        }
		    };
		            
		    PopupMenu popup = new PopupMenu();
		    MenuItem defaultItem = new MenuItem("إنهاء");
		    defaultItem.addActionListener(exitListener);
		    popup.add(defaultItem);
		    trayIcon = new TrayIcon(image, "منبه الفجر", popup);

		    MouseListener mouseListener = new MouseAdapter() {
		                
		        public void mouseClicked(MouseEvent e) {
		        	if(e.getButton()==MouseEvent.BUTTON1){
		        		tray.remove(trayIcon);
		        		MyDates.this.setVisible(true);
		        	}
		        }
		    };    
		    trayIcon.setImageAutoSize(true);
		    //trayIcon.addActionListener(actionListener);
		    trayIcon.addMouseListener(mouseListener);

		    try {
		        tray.add(trayIcon);
		    } catch (AWTException e) {
		        System.err.println("TrayIcon could not be added.");
		    }

		} else {
			System.out.println("error");
		    //  System Tray is not supported

		}

	}

نشرح الشيفرة الآن بهدوء

SystemTray.isSupported()

الفئة SystemTray تمثل مجموعة الأيقونات في شريط المهام
هذه الدالة ترجع true أو false
على حسب دعم النظام وصن لعملية إضافة أيقونة إلى شريط المهام

لكي تستطيع إضافة أو حذف أيقونة في شريط المهام
يجب أن تحصل على مؤشر على شريط المهام

SystemTray.getSystemTray()

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

trayIcon = new TrayIcon(image, "منبه الفجر", popup);

بعد هذا نضيف الأيقونة إلى الشريط

tray.add(trayIcon);

عند الإنتهاء من الأيقونة نقوم بحذف الأيقونة

tray.remove(trayIcon);

هذه أهم الأشياء في الشيفرة السابقة
أي أسئلة أنا جاهز
ملاحظة أخيرة:هذه الفئة تعمل على jdk1.6+
(jdk1.6+ تعني إما 1.6 أو أعلى)
بما أني قد تكلمت كثيراً في المقدمة
فأنتم معفون من الخاتمة اليوم
أترككم في أمان الله

المراجع:
1- مقالة بعنوان New System Tray Functionality in Java SE 6 من دروس صن

http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/systemtray/

2- الجزء الخاص بالفئة SystemTray من توثيق JDK1.6

http://java.sun.com/javase/6/docs/api/java/awt/SystemTray.html

تحياتي

Tags: , , , , , , ,

4 Responses to “لمحة جافاوية 35: أيقونة في شريط المهام”

  1. م.لويال قال:

    هوا انتا لليوم طيب !

    بس للامانه فكرة الدرس أكثر من رائعة
    يعيشك ربنا …

  2. admin قال:

    ايش يا بشمهندسة
    نفسك أموت :)

    زورونا تجدوا ما يسركم :D
    (إعلان لبقالة)

    تحياتي قصدي يعيشك
    (قالبة تونسي :D )

  3. abuoof قال:

    جزاك الله خير
    كنت محق في تسمية مدونتك بالادبية
    درس رائع أول مرة أعرف أساساُ حدوث هذا لأنه لم يقابلني في برنامج من قبل
    دمتم في رعاية الله

  4. admin قال:

    على رحب والسعة عبد الله

    تحياتي

Leave a Reply