Wenn ich das Problem richtig verstehe, könnten Sie eine DocumentFilter
dafür verwenden, und erlauben Sie nur den Text eingefügt werden, wenn sagen wir die Verzögerung der Tastendruck über 0,5 Sekunden ist.
Beispiel:
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.text.AbstractDocument;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;
public class Example {
public Example() {
JTextArea textArea = new JTextArea();
((AbstractDocument) textArea.getDocument()).setDocumentFilter(new DocumentFilter() {
String lastStr = "";
long time = System.currentTimeMillis();
@Override
public void replace(FilterBypass fb, int offset, int length, String str, AttributeSet attr)
throws BadLocationException {
long delay = System.currentTimeMillis() - time;
time = System.currentTimeMillis();
if (str.equals(lastStr) && delay <= 500) {
return;
}
lastStr = str;
super.replace(fb, offset, length, str, attr);
}
});
JFrame frame = new JFrame();
frame.setContentPane(textArea);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 600);
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
new Example();
}
}
ja, aber was ist, wenn jemand will, die Taste gedrückt halten? Sie werden bestimmte UX-Erwartungen brechen. Warum brauchen Sie diesen Ansatz? Welches Problem versuchen Sie zu lösen? – KevinO
Ich habe einen Taschenrechner und ich brauche diese Funktion überhaupt nicht. –
Lassen Sie den Benutzer entscheiden, wie Sie Daten in den Textbereich eingeben. Nehmen Sie zum Beispiel dieses Kommentarfeld. Es macht keinen Sinn, die 111111111111111 zu halten, aber die Kommentarbox erlaubt es. Mach dir keine Sorgen über etwas so Triviales. (1-). – camickr