Java 限制JTextField的用户控制

Java 限制JTextField的用户控制,java,swing,jtextfield,Java,Swing,Jtextfield,我有一个游戏,你可以用字母库中的字母创造单词。每次键入字母时,我都希望字母图标消失,并在删除后重新出现。我已经完成了大部分功能,但是有一些bug我无法修复。现在我正在使用一个KeyListener并根据关键事件过滤输入/采取行动。但是,同时按下多个键时会出现并发症 输入过滤不是我的主要问题,它是在删除信件时将其放回银行。有没有办法完全删除插入符号,只允许用户在JTextField的末尾添加输入/退格?此外,任何关于正确处理按钮捣碎的提示都将不胜感激。谢谢 注意:如果您曾经玩过Super Text

我有一个游戏,你可以用字母库中的字母创造单词。每次键入字母时,我都希望字母图标消失,并在删除后重新出现。我已经完成了大部分功能,但是有一些bug我无法修复。现在我正在使用一个
KeyListener
并根据关键事件过滤输入/采取行动。但是,同时按下多个键时会出现并发症

输入过滤不是我的主要问题,它是在删除信件时将其放回银行。有没有办法完全删除插入符号,只允许用户在
JTextField
的末尾添加输入/退格?此外,任何关于正确处理按钮捣碎的提示都将不胜感激。谢谢


注意:如果您曾经玩过Super Text Twist,那基本上就是我要使用的猜测方法。

您可以扩展
PlainDocument
(在
JTextField
中使用)并覆盖insertString()和remove()方法。您可以检查插入或删除的内容,并调整您的界面


或者(可能更好)按照建议使用
文档过滤器
满是鳗鱼的气垫船

你现在这样做了吗?我建议在JTextField上放置一个侦听器,然后每当它发生变化时,对照可用的字母检查其中的所有文本,您的程序将做更多的工作,但它仍然能够保持没有问题。但这不会阻止用户键入未包含的字母…通过setEditable(false)使JTextField不可编辑,然后使用您的KeyListener(或键绑定)添加或删除字符。@dann.dev这似乎效率很低,即使程序可以跟上。我宁愿按键级别检查,也不愿在每次输入更改时都重新检查多个字母。@HovercraftFullOfEels我会尝试一下,谢谢。@dann.dev:idea可以工作,特别是使用文档过滤器,在输入发布到文本组件之前检查输入,有效地防止用户添加或删除错误数据。