Originariamente inviato da andbin
Per limitare JTextField si deve estendere PlainDocument:
codice:
import javax.swing.text.*;
public class LimitedPlainDocument extends PlainDocument
{
private int maxSize;
public LimitedPlainDocument (int maxSize)
{
this.maxSize = maxSize;
}
public void insertString (int offs, String str, AttributeSet a)
throws BadLocationException
{
if (str == null)
return;
if (offs + str.length () > maxSize)
str = str.substring (0, maxSize - offs);
super.insertString (offs, str, a);
}
}
Poi ad esempio:
tuoTextField.setDocument (new LimitedPlainDocument (20));
Grazie mille! Nel frattempo avevo risolto così:
codice:
private class MyKeyListener extends KeyAdapter {
private String oldString;
private int limit;
public MyKeyListener(int limit) throws IllegalArgumentException {
if (limit < 1) {
throw new IllegalArgumentException("limit must be > 0");
}
this.limit = limit;
}
@Override
public void keyTyped(KeyEvent e) {
if (category.getText().length() > limit) {
e.consume();
} else {
oldString = category.getText();
}
}
@Override
public void keyReleased(KeyEvent e) {
if (category.getText().length() > limit) {
category.setText(oldString);
}
}
}
ma la tua soluzione mi sembra più adatta ^^
Grazie ancora