Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #13413 > unrolled thread

inputvalidation of inputdialog

Started byMark Sudau <news@sudau.net>
First post2012-04-05 14:48 +0200
Last post2012-04-05 09:31 -0700
Articles 2 — 2 participants

Back to article view | Back to comp.lang.java.programmer


Contents

  inputvalidation of inputdialog Mark Sudau <news@sudau.net> - 2012-04-05 14:48 +0200
    Re: inputvalidation of inputdialog markspace <-@.> - 2012-04-05 09:31 -0700

#13413 — inputvalidation of inputdialog

FromMark Sudau <news@sudau.net>
Date2012-04-05 14:48 +0200
Subjectinputvalidation of inputdialog
Message-ID<4f7d94b5$0$7609$9b4e6d93@newsspool1.arcor-online.net>
Hi folks,

I need an InputDialog where I can validate the the users input. The 
validation is variable to the belongings of business rules. The 
validation my be a number, regular expression, length or some other kind 
of validation I actually haven't thought of.

It is not wanted to enter data and validate after pressing ok. The 
validation must be done immediately after pressing a key.

I already thought of a KeyListener but using a KeyListener makes it 
difficult to validate the length of a regular expression.

Does any one have an idea?

Kind regards
Mark

[toc] | [next] | [standalone]


#13417

Frommarkspace <-@.>
Date2012-04-05 09:31 -0700
Message-ID<jlkhcq$l53$1@dont-email.me>
In reply to#13413
On 4/5/2012 5:48 AM, Mark Sudau wrote:
> I already thought of a KeyListener but using a KeyListener makes it
> difficult to validate the length of a regular expression.


A key listener is probably the wrong direction entirely.  For length, 
make a Document and set the text field's document to that, or use a 
document listener, or use a DocumentFilter.

Something like (untested):

   DocumentFilter filter = new DocumentFilter() {
      private final int MAX_LEN = 42;
      public void insertString( FilterBypass fb,
          int offset, String string, AttributeSet att )
      {
        if( fb.getDocument().getLength() + string.getLength()
                < MAX_LEN )
        {
          fb.insertString( offset, string, attr );
        }
      }
      public void replaceString( FilterBypass fb,
          int offset, String string, AttributeSet att )
      {
        fb.replaceString( offset, string, attr );
      }
    };


In general, use the validators that Java already provides, don't roll 
your own.

<http://docs.oracle.com/javase/tutorial/uiswing/misc/focus.html>

(You have to scroll down a bit to get to the part about validating 
input.  It's there though, honest.)


Other links:


<http://docs.oracle.com/javase/tutorial/uiswing/components/formattedtextfield.html>

<http://docs.oracle.com/javase/7/docs/api/javax/swing/InputVerifier.html>

<http://docs.oracle.com/javase/7/docs/api/javax/swing/text/DocumentFilter.html>

PlainDocument is an AbstractDocument that you could easily extend.  I 
think PlainDocument is the model used for all plain text fields in Swing 
as well as the unformatted (plain) text areas.

<http://docs.oracle.com/javase/7/docs/api/javax/swing/text/PlainDocument.html>

[toc] | [prev] | [standalone]


Back to top | Article view | comp.lang.java.programmer


csiph-web