deshacer/repetir en un jTextPane
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
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
