Veröffentlicht 14. August 200223 j Hi Wie bekomme ich den Rahmen des JTextField weg? Wie kann ich ein JTextField so formatieren, dass nur eine bestimmte Anzahl an Zeichen eingegeben werden kann - bzw. sogar, dass man nur Ziffern oder bestimmteZeichen angeben kann? Danke im voraus
15. August 200223 j Hallo, du musst nur einen KeyListener hinzufügen wie unten: txtDBName.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(KeyEvent e) { textfield_keyTyped(e); } }); void textfield_keyTyped(KeyEvent e) { if(txtDBUser.getText() < 10) { if(e.getKeyCode() != KeyEvent.VK_BACK_SPACE || e.getKeyCode() != KeyEvent.VK_DELETE) { e.consume(); } } } hier wird abgefragt, ob die Länge des Textes 10 Zeichen überschreitet und die eingegeben Zeichen nicht BackSpace oder delete sind. Ist es ein normales Zeichen, dann wird der Buchstabe nicht angenommen. Du musst dann nur die zweite IF-Abfrage so ändern, dass es für Dich passt, und dann sollte das klappen... Gruss, Katja
15. August 200223 j Tach. Um den Rand eines JTextField wegzubekommen mach einfach folgendes: ... JTextField txtField = new JTextField(); txtField.setBorder(BorderFactory.createEmptyBorder()); ... Das sollte es eigentlich gewesen sein... so long schlemm
15. August 200223 j Hi ich mache mir in solchen Fällen lieber ein neues Document: z.B. public class myDocument extends PlainDocument { private int maxLength = 9999; public FixedNumericDocument(int maxLength) { super(); this.maxLength = maxLength; public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException { if (getLength() + str.length() > maxLength) { Toolkit.getDefaultToolkit().beep(); return; } else { super.insertString(offset, str, attr); } In der IF-Abfrage prüft er zuerst, ob der neu einzufügende String nicht mit dem alten zusammen die maLänge uberschreitet, wenn ja machts beep, ansonsten fügt er in ein. Mann kann noch viel mehr an prüfungen einbauen. Das Document hat den Vorteil, halt nur einmal da, mehrfach verwendbar, und hat nicht den Nachteil des KeyListener, denn wenn man da sehr schnell den Text eingibt und wieder löscht, dann kann er schon mal durcheinander kommen.
16. August 200223 j Autor Danke - ihr habt mir alles sehr geholfen Ich hoffe ich kann euch mal ebenso behilflich sein! Ciao Krain
20. August 200223 j hallo.. mit der neuen api 1.4 wird es noch viel viel einfacher.. da gibt es jetzt ein JFormattedTextField() und einen MaskFormatter() du willst 10 Zeichen ok: MaskFormatter Maske = new MaskFormatter("**********"); JFormattedTextField Eingabe = new JFormattedTextField(Maske); ; die "*" stehen für jedes Zeichen ( ? = Buchstabe, # = Zahl usw ) 2 ganze Zeilen.. also dann.. mfg mamamia
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.