Vi ringrazio anticipatamente
MARICA
Marica, io ho affrontato qualcosa del genere. Anzi, esattamente il tuo
stesso problema, piu' il poter forzare a maiuscolo/minuscolo il testo
immesso. Ho esteso la classe JTextField e le ho fatto implementare
l'interfaccia KeyListener. Sull'evento keyTyped faccio controllare se il
numero di caratteri già immessi più l'eventuale nuovo carattere sia o
meno minore del limite massimo.
Il codice (togliendo la parte maiuscolo/minuscolo) è
import java.awt.*;
import java.awt.event.*;
import com.sun.java.swing.*;
import com.sun.java.swing.event.*;
public class JControlCaseTextField extends JTextField implements
KeyListener {
private int maxLength;
public JControlCaseTextField() {
maxLength = -1;
this.addKeyListener(this);
}
public void setMaxLength(int newMaxLength) {
maxLength = newMaxLength;
}
public int getMaxLength() {
return maxLength;
}
public void keyReleased(KeyEvent e) {}
public void keyPressed(KeyEvent e) {}
public void keyTyped(KeyEvent e) {
String ts = getText();
int cp = getCaretPosition();
char c = e.getKeyChar();
if (c == KeyEvent.VK_BACK_SPACE) {
if( ts.length() > 0) {
String head = ts.substring(0, cp);
String tail = ts.substring(cp);
setText(head + tail);
}
}
else if (c == KeyEvent.VK_ENTER) {
// mangio l'evento senza fare nulla, forse potrei fargli perdere il
focus o qc del genere?
}
else if (maxLength == -1 || ts.length() < maxLength) {
String head = ts.substring(0, cp);
String tail = ts.substring(cp);
setText(head + c + tail);
cp++;
}
setCaretPosition(cp);
e.consume();
}
}
Se qualcuno avesse migliorie o commenti, sono chiaramente benvenuti!
Stefano
Devi associare il tuo JTextField ad un Document con il metodo insertString
opportunamente modificato. Un esempio semplice e' il seguente:
JTextField text = new JTextField();
text.setDocument(
new PlainDocument() {
int numeroMassimoDiCaratteri = 10;
public void insertString(int offset, String str, AttributeSet a)
throws BadLocationException
{
if(getLength() >= numeroMassimoDiCaratteri) return;
super.insertString(offset,str,a);
}
}
);
Ciao.
-- o JOB - The Java Objects Builder - Try it, it's FREE!
o o http://www.uno.it/utenti/tetractys/job.html
o o o TETRACTYS Software tetr...@uno.it
o o o o Leonardo Boselli bos...@uno.it