作者csihcs (非天夜翔)
站内java
标题Re: [J2SE] 有关 javax.swing.JTextField
时间Tue Jun 10 09:54:00 2008
※ 引述《csihcs (非天夜翔)》之铭言:
: 想请问一下各位大大,
: 我在一个 Panel 中加了一个 Field,
: 要怎麽让 Field 只能让使用者输入文字,
: 有限制最大长度的,
: 例如:限制长度为 3,
: 那使用者只能输入最多3个字,
: 像是 Field 中,输入了 ABC,
: 那他要打 D 的时候,不会出现 ABCD, <<== 这个才是我想要的效果。
: 而不是可以输入很多,我读3个字,
: 像是使用者输入 ABCD,而我只读 ABC。
: 麻烦大大指点迷津。谢谢。 m(_@_)m
听了 TonyQ 大的解说,做了下面这个动作
JTextField f = new JTextField();
DocListener dl = new DocListener(3);
f.getDocument().addDocumentListener(dl);
public class DocListener impliments DocumentListener {
private final int length;
public DocListener(int length) {
this.length = length;
}
public void insertUpdate(DocumentEvent e) {
try {
Document doc = e.getDocument();
if(doc.getLength() > length) {
doc.remove(length,doc.getLength(),null);
// 这里 Compile 会过,但是 Runtim 的时候只要这行被执行到就会出现
// java.lang.IllegalStateException: Attempt to mutate in notification
}
} catch (BadLocationException ex) {}
}
public void removeUpdate(DocumentEvent e) {}
public void changedUpdate(DocumentEvent e) {}
}
想请问各位大大,我该如何在这里做 doc 的内容修改。
谢谢各位大大的指教。 m(_@_)m
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.104.31.180
1F:推 TonyQ:果然 -.- 这就是我跟你说他嘛烦得地方 06/10 12:05