jTextField.getDocument().addDocumentListener(按你的需要你自己做成的listener)就是这么加的。不过new DocumentListener()这里是让你添加一个监听器。DocumentListener本身只是一个interface,你要自己继承他做一个class才行监听器应该加过吧?比如给鼠标事件加一个监听器,道理是一样的。
调试欢乐多
jTextField.getDocument().addDocumentListener(new DocumentListener(){
public void insertUpdate(DocumentEvent e){
jTextField.setText("");
}
public void removeUpdate(DocumentEvent e){
jTextField.setText("");
}
public void changedUpdate(DocumentEvent e){
jTextField.setText("");
}
});可是每次当运行完insertUpdate()方法中的jTextField.setText("");的时候都会跳出一个“stopped in class with tracing disabled”的错误提示框。请问该怎么办?谢谢!
{
addFocusListener(new FocusListener()
{
public void focusGained(FocusEvent e)
{
setClear(true);
}
public void focusLost(FocusEvent e)
{
setClear(false);
}
}
);
}
private void setClear(boolean clear)
{
Document doc = getDocument();
if(doc != null && (doc instanceof jTextField))
{
((jTextField)doc).setClear(clear);
}
}
cyouryuu兄:如果我没理解错的话你的意思是当jTextField获得焦点的时候就清空之,可是我的意思是当jTextField中原先显示的文本被改变的时候才清空之啊。
另外,我不明白你写的setClear(boolean clear)方法中的Document doc = getDocument();这句是什么意思,也就是getDocument();是谁的方法?得到的Document变量代表了什么信息?
谢谢!
If you doing like this, nobody can input text.
everytime when you input/delete/change the text, a DocumentEvent will be generated, related handler is called, and you reset the text to "".
谢谢楼上各位兄弟的指教。
我干脆说我的最终目的吧!
是这样,我想用jTextField给用户提供一个编辑字符串的地方,我先让此jTextField显示一个供他参考的初始值,但这个值不允许他编辑(因为这个字符串并不是用户直接输入的,而是通过一系列的用户操作步骤自动生成的,在生成过程中要记录许多相关信息,所以不能允许用户直接编辑最终结果,但上次生成的最终结果可以显示出来供他参考),也就是说,要么他就原封不动地选用初始值,要么他就把jTextField清空输入新值,但如果变化不大一般人都有对原字符串进行修改后使用的习惯,为了强制实现我的目的,我就想到了当用户第一次编辑字符串的时候就自动把jTextField清空,然后他才能输入新值。
不知道我说明白了没有,或者有没有更好的方法实现我的意图。
请大家指教!
严重感谢!
boolean changed=false;when user first time changes the textfield,
...
if(!changed){
setText="";
changed=true;
}next time do nothing
那如何监视jTextField中文本的变化呢?
校验恐怕不行吧?因为标准不好定啊。
我现在只要知道怎么能监视jTextField中文本的变化就行了,请高手就此指点一下。
谢谢!
解决办法一是自己写线程同步。
二是利用大多数JVM 处理 AWTEvent 的特性。大多数JVM一次处理一个Event, 保证了无冲突。利用这一点,可以在DocumentListener 方法中产生 AWTEvent 对象,然后在processEvent() 中检测和处理,如setText="".
不用我写Code了巴。说的这么清楚了。我还要忙着找工作呢。