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

درس: كيفية استخدام UndoManager بالبرامج

مغلق
بدأه صلاح الثبيتي في 15 أبريل 2003 · 1 رد · 865 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم :)

اي شخص يحتاج الى Undo و Redo لاحد برامجه،، يستطيع من خلال هذا الدرس تطبيق الطريقه و استخدامها :)

بالبداية: اضف الباكيج للبرنامج:

import javax.swing.undo.*;

ثانياً: نقوم بنسخ الكود التالي للبرنامج:

//UNDO AND REDOACTION CLASSES
//THIS PASRT OF CODE WAS TAKEN FROM THE NOTEPAD DEMO FOUND IN THE JDK1.4.1 DEMO DIRECTORY
class UndoAction extends AbstractAction{
	public UndoAction(){
		super("Undo", new ImageIcon("images/undo.gif"));
		setEnabled(false);
	}
	public void actionPerformed(ActionEvent e){
		try{
			undo.undo();
		}
		catch (CannotUndoException ex){
			System.out.println("Unable to undo: " + ex);
			ex.printStackTrace();
		}
		update();
		redoAction.update();
	}
	protected void update(){
		if(undo.canUndo()){
			setEnabled(true);
			putValue("Undo", undo.getUndoPresentationName());
		}
		else{
			setEnabled(false);
			putValue(Action.NAME, "Undo");
		}
	}
}
class RedoAction extends AbstractAction{
	public RedoAction(){
		super("Redo", new ImageIcon("images/redo.gif"));
		setEnabled(false);
	}
	public void actionPerformed(ActionEvent e){
		try{
			undo.redo();
		}
		catch (CannotRedoException ex){
			System.out.println("Unable to redo: " + ex);
			ex.printStackTrace();
		}
		update();
		undoAction.update();
	}
	protected void update(){
		if(undo.canRedo()){
			setEnabled(true);
			putValue("Redo", undo.getRedoPresentationName());
		}
		else{
			setEnabled(false);
			putValue(Action.NAME, "Redo");
		}
	}
}

ثالثاً: نقوم بانشاء الاوبجكت للبرنامج:

//for using undo & redo
UndoManager undo = new UndoManager();
UndoAction undoAction = new UndoAction();
RedoAction redoAction = new RedoAction();

اخيراً: نقوم اضافة الـ UndoAction و الـ redoAction للـ Menu كأنه MenuItem و سوف تستطيع استخدامها بشكل تلقائي:

MenuName.add(undoAction);
ManuName.add(redoAction);

** للتوضيح .. اذا كان المنيو مافي اي صور .. نستبدل هذا الكود:

super("Undo", new ImageIcon("images/undo.gif"));

بهذا الكود:

super("Undo");

و نفس الطريقه مع كلاس RedoAction ..

طبعاً انا بارفق صور صغيره خاصه للمنيو .. و من ضمنها صور Undo و Redo :)

اخوكم: صلاح الثبيتي

swing.zip

#2

الاستاذ صلاح شكرا كثير..انا جربت هذي;) الطريقة وفعلا صحيحة وممتازة

والشرح واضح ومفيد جدا...

الله يعطيك الف عافية, ويسهل عليك امورك ويوفقكم

اختك رحيق

هذا الموضوع مغلق.

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