Jexi开发 (13) 实现编辑功能

博客讲述了对Caret进行重新设计,用Position表示其位置。为实现输入、删除功能,采用Command模式,定义Command接口,由单态CommandManager管理Command链表负责Undo/Redo,虽Undo未完成,但最新版本已可实现输入、删除和光标定位功能,欢迎下载提建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天把Caret重新设计了一遍,用一个Position表示Caret的位置:

public final class Position {
??? private int pageIndex;
??? private int rowIndex;
??? private int columnIndex;
??? ...
}

Caret的位置无法用Paragraph和Index表示,因为第N行末尾和第N+1行开头是一个位置。

为了实现输入,删除的功能,采用Command模式,定义Command接口:

interface Command {
??? boolean execute();
??? void unexecute();
}

由单态CommandManager管理Command链表,负者实现Undo/Redo。

Undo还没有实现,因为InsertCommand和DeleteCommand的unexecute()还没有写。

最新的版本可以实现输入,删除,光标定位的功能:

欢迎大家下载,并提出宝贵意见和建议!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值