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

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

اي شخص يحتاج الى 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 ..

 

 

 


Copyright © www.kettaneh.net