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); |