我想限制用戶可以在文本字段中輸入的字符的最大長度,但它似乎不工作。限制在JTextField輸入的長度不起作用
下面是代碼:
text2 = new JTextField("Enter text here",8);
有什麼我做錯了嗎?我怎樣才能使極限正常工作?
我想限制用戶可以在文本字段中輸入的字符的最大長度,但它似乎不工作。限制在JTextField輸入的長度不起作用
下面是代碼:
text2 = new JTextField("Enter text here",8);
有什麼我做錯了嗎?我怎樣才能使極限正常工作?
您當前的代碼沒有設置最大長度,而是定義了可見列的數量。
爲了限制數據的最大長度,你可以設置文本字段的自定義Document
不允許該打破的最大長度限制補充:
public final class LengthRestrictedDocument extends PlainDocument {
private final int limit;
public LengthRestrictedDocument(int limit) {
this.limit = limit;
}
@Override
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
if (str == null)
return;
if ((getLength() + str.length()) <= limit) {
super.insertString(offs, str, a);
}
}
}
然後設置你的文本字段使用此文檔:
text2.setDocument(new LengthRestrictedDocument(8));
只需延伸JTextField類和在構造覆蓋的keyReleased事件並將其指向在該檢查長度的新方法:
package gui;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JTextField;
public class RecordClassTextField extends JTextField {
public RecordClassTextField() {
this.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
cleanText();
}
});
}
private void cleanText()
{
if(this.getText().length() > 17){
System.out.println("Over 17");
}
}
}
我相信這會幫助你。我剛剛將keyTyped
類型的KeyListener
添加到JTextField
。 KeyListener
在用戶輸入的字符多於if
語句中定義的限制時起作用。
text2 = new JTextField("Enter text here",8);
text2.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
if (text2.getText().length() == 8) {
e.consume();
}
}
});
你可以在這裏找到一個很好的例子(http://www.java2s.com/Tutorial/Java/0240__Swing/LimitJTextFieldinputtoamaximumlength.htm)。 – Designpattern