在JTextArea中剪切和粘贴

时间:2010-02-05 10:31:07

标签: java swing jtextarea

我正在开发一个应用程序,它要求JTextArea中只有165个字符。 我强加了这个条件。我使用了一个静态计数器来计算在textarea中输入的字符数,并编码处理条件,当用户从文本中删除任何字符串时,计数器必须通过考虑所选字符串的长度来增加。

但是现在我想要处理用户通过按“Ctrl + X”和“Ctrl + V”执行“剪切”或“粘贴”选项时的情况。我知道JTextComponent中的默认方法是在JTextArea中继承的,但是我想得到剪切文本并知道剪切文本的长度,以便减少为字符维护的计数器,并在粘贴适当数量时递增它。

3 个答案:

答案 0 :(得分:4)

创建DocumentFilter并将其设置为新的PlainDocument。使用此文档创建JTextArea。 (或者在转换为AbstractDocument之后使用JTextArea的默认文档)。

请参阅我的回答here获取样本。

答案 1 :(得分:3)

听起来您需要使用DocumentListener来跟踪更改。文档侦听器中的事件将告诉您在任何给定的更改中添加/删除了多少个字符,并且还提供了对支持文本区域的Document的引用。

以下是名为JTextArea的{​​{1}}的示例文档侦听器实现:

textArea

此侦听器将检测剪切和粘贴以及按键。

答案 2 :(得分:3)

阅读Implementing a Document Filter上Swing教程中有关限制文本组件中字符数的工作代码的部分。

过滤器优于侦听器,因为它可以防止更新Document。如果您使用侦听器,则需要在文本超出限制时撤消更改。