2010-10-16 50 views
1

我想要一个JTextField(或其他类似文本的输入,它支持焦点和光标 - 或者我应该编码自己的?),我想要完全控制直接输入。即我想忽略大部分输入,并专门处理其他输入。看起来JFormattedTextField不是我想要的,因为它不是在即时输入上进行验证,而是在焦点丢失时进行验证。java:JTextField上的完全控制输入

我试着添加一个按键侦听器,但它有点不明显,我应该如何使用它。看起来我可以在keyPressed中追踪光标更改(通过按键)或复制/粘贴(通过按键快捷键),我可以捕获keyTyped中的所有正常键输入。我不知道如何捕捉光标变化或通过鼠标进行复制/粘贴(出于某种原因,右键单击不起作用,所以通过鼠标在上下文菜单中复制/粘贴似乎是不可能的,但我不确定这是否可能是一个不同的问题,或者如果它应该工作,而不是由于某种原因)。

我基本上要像下面这样处理:

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

它应该是绝对不可能让用户得到任何东西在未通过此处理去文本框。

现在,我似乎需要关心很多特定情况(例如在某些体系结构中,可能会有一些上下文菜单可以复制/粘贴或输入内容,手动处理所有鼠标事件等)。 )。

或者其他方式,这也涉及到很多特殊处理:自己重新编码这样的输入字段。这仍然看起来更加节省,因为我可以肯定地知道,没有任何棘手的方法可以绕过处理程序(我确实必须知道这一点)。顺便说一句,我该怎么做?我想扩展一个JLabel。我怎样才能扩展它,使它可以得到重点?

我想知道你将如何实现这样的东西。

回答