PDA

Visualizza la versione completa : [java] dimensione max JTextField


mageta
24-10-2004, 11:57
Ciao a tutti, ho i lseguente problema:

io devo riuscire a impostare un limite di scrittura in jtextfield , ad esempio se lo setto a 5, quando l'utente tenta di immettere il 6 carattere jtextfield blocca l'inserimento.


qualche idea?


thx

unomichisiada
24-10-2004, 12:58
import com.sun.java.swing.text.*;
//import javax.swing.text.*;
public class JTextFieldLimit extends PlainDocument {
private int limit;
// optional uppercase conversion
private boolean toUppoercase = false;

JTextFieldLimit(int limit) {
super();
this.limit = limit;
}

JTextFieldLimit(int limit, boolean upper) {
super();
this.limit = limit;
toUppercase = upper;
}

public void insertString
(int offset, String str, AttributeSet attr)
throws BadLocationException {
if (str == null) return;

if ((getLength() + str.length()) <= limit) {
if (toUppercase) str = str.toUpperCase();
super.insertString(offset, str, attr);
}
}
}




import java.awt.*;
import com.sun.java.swing.*;
//import javax.swing.*;

public class tswing extends JApplet{
JTextField textfield1;
JLabel label1;

public void init() {
getContentPane().setLayout(new FlowLayout());
//
label1 = new JLabel("max 10 chars");
textfield1 = new JTextField(15);
getContentPane().add(label1);
getContentPane().add(textfield1);
textfield1.setDocument
(new JTextFieldLimit(10));
}
}
Alternativamente puoi scriverti una tua classe che estende JTextField e invece di usare il suo plain document predefinito usa quell che ti ho postato,in questo modo il componente sarÓ autocontenuto

Loading