我正在开发一个应用程序,它要求JTextArea中只有165个字符。 我强加了这个条件。我使用了一个静态计数器来计算在textarea中输入的字符数,并编码处理条件,当用户从文本中删除任何字符串时,计数器必须通过考虑所选字符串的长度来增加。
但是现在我想要处理用户通过按“Ctrl + X”和“Ctrl + V”执行“剪切”或“粘贴”选项时的情况。我知道JTextComponent中的默认方法是在JTextArea中继承的,但是我想得到剪切文本并知道剪切文本的长度,以便减少为字符维护的计数器,并在粘贴适当数量时递增它。
答案 0 :(得分:4)
创建DocumentFilter
并将其设置为新的PlainDocument
。使用此文档创建JTextArea
。 (或者在转换为AbstractDocument之后使用JTextArea的默认文档)。
请参阅我的回答here获取样本。
答案 1 :(得分:3)
听起来您需要使用DocumentListener
来跟踪更改。文档侦听器中的事件将告诉您在任何给定的更改中添加/删除了多少个字符,并且还提供了对支持文本区域的Document
的引用。
以下是名为JTextArea
的{{1}}的示例文档侦听器实现:
textArea
此侦听器将检测剪切和粘贴以及按键。
答案 2 :(得分:3)
阅读Implementing a Document Filter上Swing教程中有关限制文本组件中字符数的工作代码的部分。
过滤器优于侦听器,因为它可以防止更新Document。如果您使用侦听器,则需要在文本超出限制时撤消更改。