Unterschiede
Hier werden die Unterschiede zwischen der gewählten und der aktuellen Version gezeigt.
| swing:jtextfield-size 2011/11/16 10:05 | swing:jtextfield-size 2020/01/22 20:59 aktuell | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| [[swing:swing|Java - AWT/Swing]]\\ | [[swing:swing|Java - AWT/Swing]]\\ | ||
| - | ====== JTextField, Zeichenzahl begrenzen ====== | + | ====== JTextField, Anzahl der Zeichen begrenzen ====== |
| - | Im folgenden Code-Beisiel werden maximal 10 akzeptiert:\\ | + | Im folgenden Code-Beisiel wird die maximale Anzahl von Zeichen auf 10 begrenzt:\\ |
| + | Dazu wird ein eigenes Document "MaxSizeDocument" definiert.\\ | ||
| \\ | \\ | ||
| <html> | <html> | ||
| Zeile 25: | Zeile 26: | ||
| <code java> | <code java> | ||
| package com.sowas.snippets.jtextfield; | package com.sowas.snippets.jtextfield; | ||
| + | import java.awt.BorderLayout; | ||
| + | import java.awt.Toolkit; | ||
| + | import javax.swing.JFrame; | ||
| + | import javax.swing.JTextField; | ||
| + | import javax.swing.text.AttributeSet; | ||
| import javax.swing.text.BadLocationException; | import javax.swing.text.BadLocationException; | ||
| import javax.swing.text.PlainDocument; | import javax.swing.text.PlainDocument; | ||
| - | import javax.swing.text.AttributeSet; | + | |
| - | import java.math.BigDecimal; | + | |
| - | + | public class MaxSizeDocument extends PlainDocument { | |
| - | import javax.swing.*; | + | int maxSize; |
| - | import java.awt.*; | + | |
| - | import java.awt.event.*; | + | public MaxSizeDocument(int maxSize) { |
| - | + | this.maxSize = maxSize; | |
| - | + | } | |
| - | public class TextFieldDemo { | + | |
| - | public static void main (final String [] ignored){ | + | @Override |
| - | JFrame frame = new JFrame ("Numerisches JTextField"); | + | public void insertString (final int offset, final String text, |
| - | JTextField tf = new JTextField(); | + | final AttributeSet attributeSet) throws BadLocationException { |
| - | Document doc = tf.getDocument(); | + | if (isNewLengthOk(text)) |
| - | ((AbstractDocument) doc).setDocumentFilter(new DocumentNumberFilter(10)); | + | super.insertString (offset, text, attributeSet); |
| - | frame.getContentPane().setLayout (new BorderLayout (0,0)); | + | else |
| - | frame.getContentPane().add(tv, BorderLayout.NORTH); | + | Toolkit.getDefaultToolkit().beep(); |
| + | } | ||
| + | |||
| + | protected boolean isNewLengthOk(final String text) { | ||
| + | if (getLength() + text.length() <= maxSize) | ||
| + | return true; | ||
| + | return false; | ||
| + | } | ||
| + | |||
| + | public static void main (final String [] ignored) { | ||
| + | JFrame frame = new JFrame ("JTextField-Demo"); | ||
| + | frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); | ||
| + | frame.getContentPane().setLayout(new BorderLayout (0,0)); | ||
| + | frame.getContentPane().add(new JTextField(new MaxSizeDocument(10), "", 0), BorderLayout.NORTH); | ||
| frame.pack (); | frame.pack (); | ||
| frame.setVisible (true); | frame.setVisible (true); | ||