У меня есть ArrayList объектов линии, называемых «линиями». Я сделал свой собственный класс строк для рисования линий с некоторыми ограничениями. Он включает в себя выбор двух точек в панели и линию, соединяющую две точки. Каждый раз, когда создается строка, она добавляется к «линиям». Линии рисуются в панели.Отменить изменения в массивеList
Функция краски в моей панели выглядит следующим образом:
public void paintComponent(Graphics g){
super.paintComponent(g);
for(final Line r:lines){
r.paint((Graphics2D)g);
}
}
И каждый раз, когда две точки нажатия на панели, новая линия создана.
class Board extends JPanel{
public void placeLine(){
Point p1,p2;
JLabel l1,l2;
...
lines.add(new Line(p1,p2,l1,l2));
this.repaint();
}
public void deleteLine(Line l){
lines.remove(l);
}
}
Я хочу, чтобы создать UndoAbleEdit в этом, и каждый раз, когда я даю отменить, метод отката должен вернуться к последнему действию (i.e.creating строки или удаление строки). Я пробовал отменять события в JTextArea, но я не мог понять, как создать пользовательскую отмену изменений событий в ArrayLists. Предложите пример для этого.
И мне очень жаль, что вы не опубликовали его как SSCCE .. Это огромный проект, и создать SSCCE практически невозможно.
Ваш метод deleteLine работает? – guness
Это может помочь: http://stackoverflow.com/questions/3583901/how-to-design-undo-redo-in-text-editor –