java:JTextField上的完全控制输入

时间:2010-10-16 13:30:32

标签: java textinput jtextfield

我想要一个JTextField(或另一个支持焦点和光标的文本输入 - 或者我应该编写自己的代码?)我希望能够完全控制立即输入。即我想忽略大多数输入并专门处理其余的输入。似乎JFormattedTextField不是我想要的,因为它不是立即输入验证,而是当焦点丢失时。

我试图添加一个关键的监听器但是我应该如何使用它有点不明显。我似乎可以在keyPressed中跟踪光标变化(通过键)或复制/粘贴(通过键快捷键)等事件,我可以在keyTyped中捕获所有正常的键输入。我不确定如何捕捉光标变化或通过鼠标复制/粘贴(由于某种原因,右键单击无论如何都不起作用,因此在上下文菜单中通过鼠标复制/粘贴似乎不可能但我不确定是否可能是一个不同的问题,或者如果它应该工作,只是由于某种原因)。

我基本上想要以下处理程序:

interface InputHandler {
   void addStringAt(int pos, String s);
   void deleteSubString(int pos, int len);
   void setFocusTo(int pos);
}

用户绝对不可能在文本框中获取任何不通过此处理程序的内容。

现在,似乎我必须关注很多特定情况(比如在一些架构上,可能有一些上下文菜单,他们可以复制/粘贴或输入内容,手动处理所有鼠标事件等)

或者另一种方式,它还涉及许多特殊处理:自己重新编码这样的输入字段。这似乎仍然是安全的,因为我可以肯定地知道没有棘手的方法用户如何绕过处理程序(我真的必须知道这一点)。顺便问一下,我该怎么做?我想扩展一个JLabel。如何扩展它以便它可以获得焦点?

我想知道你将如何实现这样的目标。

1 个答案:

答案 0 :(得分:1)

听起来你需要DocumentFilter。一些有助于此的现有问题: