deshacer/repetir en un jTextPane

jwaldo
26 de Mayo del 2006
Estoy haciendo un procesador de textos con la opcion de deshacer o repetir un accion determinada. El problema esta en que un action no reconoce el metodo UPDATE. HE OMITIDO CODIGO DEL JFRAME

class MenuEdicion
{
private Action accionB1,accionB2;
private JMenuItem deshacer,rehacerr;
private JButton deshacer2,rehacer2;

private Panel panel;


MenuEdicion(Panel p)
{;
deshacer = new JMenuItem("deshacer");
rehacer = new JMenuItem("rehacer");
deshacer2 = new JButton("deshacer");
rehacer2 = new JButton("rehacer");
panel = p;
}


public void propiedades()
{
deshacer.setIcon(null);
rehacer.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,ActionEvent.CTRL_MASK));
rehacer.setIcon(null);

deshacer2.setText("");
deshacer2.setToolTipText("deshacer accion");
rehacer2.setText("");
rehacer2.setToolTipText("rehacer accion");
}


public void añadirPanel()
{
}


public void setActions()
{
accionB1 = new AbstractAction ("deshacer",new ImageIcon("c:\ImagenesC1413\9-10\07\sal.gif"))
{
public void actionPerformed (ActionEvent ev)
{
try
{
panel.getUndoManager().undo();
}
catch(Exception exc)
{
exc.printStackTrace();
}

update();// aqui viene el error
b1.update();// aqui viene el error EL ACTION NO ME RECONOCE EL METODO UPDATE
}
};

deshacer.setAction(accionB1);
deshacer2.setAction(accionB1);

accionB2 = new AbstractAction("rehacer",new ImageIcon("c:\ImagenesC1413\9-10\07\sal.gif"))
{
public void actionPerformed (ActionEvent ev)
{
System.out.println("Has pulsado REHACER");
}
};

rehacer.setAction(accionB2);
rehacer2.setAction(accionB2);
update();// aqui viene el error
b2.update();// aqui viene el error EL ACTION NO ME RECONOCE EL METODO UPDATE


}

// sólo he puesto el código que hace referencia a la accion deshacer/rehacer

import javax.swing.event.*;// UndoableEdit
import javax.swing.undo.*;// UndoManager

class Panel extends JPanel
{
private DefaultStyledDocument doc;
protected UndoManager undo;

Panel()
{
doc = new DefaultStyledDocument();
undo = new UndoManager();
}


public void eventos()
{
DesRe desRe = new DesRe();
doc.addUndoableEditListener(desRe);
}


class DesRe implements UndoableEditListener
{
public void undoableEditHappened(UndoableEditEvent e)
{
undo.addEdit(e.getEdit());
// aqui deberia utilizar undoAction.update();
// y redoAction.update();
}
}

public UndoManager getUndoManager()
{
return undo;
}
}

COMO PODRIA IMPLEMENTAR ESTA ACCION?
NECESITO AYUDA MUCHAS GRACIAS

jwaldo
26 de Mayo del 2006
hay un error cuando se llama al metodo UPDATE
ES accionB1.update();
y accionb2.upodate(); pero el problema esta en que no reconoce este metodo GRACIAS