Announcement

Collapse
No announcement yet.

jFormattedTextField leeren? Fehlermeldung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • jFormattedTextField leeren? Fehlermeldung

    Hallo ihr Lieben!

    Ich steh vor ein kleines Problem und weis nicht wie ich das lösen könnte. Erstmal der Quelltext:

    private void trycatch(){

    jFormattedTextField1 = new javax.swing.JFormattedTextField();
    jFormattedTextField1.setMinimumSize(new java.awt.Dimension(10, 20));
    jFormattedTextField1.setPreferredSize(new java.awt.Dimension(6, 25));
    neueSpiel.add(jFormattedTextField1, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 95, 80, -1));
    jFormattedTextField1.setCursor(new java.awt.Cursor(java.awt.Cursor.TEXT_CURSOR));


    jFormattedTextField2 = new javax.swing.JFormattedTextField();
    jFormattedTextField2.setMinimumSize(new java.awt.Dimension(10, 20));
    jFormattedTextField2.setPreferredSize(new java.awt.Dimension(6, 25));
    neueSpiel.add(jFormattedTextField2, new org.netbeans.lib.awtextra.AbsoluteConstraints(260, 95, 80, -1));
    jFormattedTextField2.setCursor(new java.awt.Cursor(java.awt.Cursor.TEXT_CURSOR));
    jFormattedTextField2.setVisible(false); // soll erst als true werden wen radiobutton anzahl spieler = 2 gesetzt wurde

    try {
    jFormattedTextField1.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("?????????????????? ????????")));
    }
    catch (ParseException ex) {

    }

    try {
    jFormattedTextField2.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("?????????????????? ????????")));
    }
    catch (ParseException ex) {

    }


    Es sind 2 Textfelder mit der Bedingung das nur Buchstaben akzeptiert werden und sobald ich eins leer lasse und auf ein Button drücke (den hab ich bereits geschrieben) soll ein error Message kommen als Textlabel (hab ich auch schon). Aber durch dies Formatieren ist da schon was eingetragen und zwar 26 Zeichen. Wie mach ich das jetzt?

    Danke!

    itznayf

  • #2
    Prüfen, ob da wirklich nur Buchstaben drin sind, bsp. mit einem regl. Ausdruck.

    Besser wäre es, ein normales JTextField zu benutzen und wirklich nur Buchstaben als Eingabe zuzulassen. Das geschieht, in dem man sich eine Klasse schreibt, die prüft, ob bei einer Eingabe wirklich nur Buchstaben drin sind:

    [highlight=java]
    public class ValidateAusdruckAndTextLength extends PlainDocument
    {
    private int maxLength;
    private String ausdruck=null;

    public ValidateAusdruckAndTextLength(int maxLength,String ausdruck)
    {
    this.maxLength=maxLength;
    this.ausdruck=ausdruck;
    }

    public ValidateAusdruckAndTextLength(int maxLength)
    {
    this.maxLength=maxLength;
    }

    public ValidateAusdruckAndTextLength(String ausdruck)
    {
    this.ausdruck=ausdruck;
    }

    @Override
    public void insertString(int offs,String str,AttributeSet a) throws BadLocationException
    {
    if(str.length()==0)
    {
    return;
    }
    if(ausdruck!=null&&ausdruck.equalsIgnoreCase("")== false)
    {
    if(!str.matches(ausdruck))
    {
    return;
    }
    }
    if(getLength()+str.length()<=maxLength||maxLength= =0)
    {
    super.insertString(offs,str,a);
    }
    }

    public void setLengthAndAusdruck(int maxLength,String ausdruck)
    {
    this.maxLength=maxLength;
    this.ausdruck=ausdruck;
    }

    }


    [/highlight]

    Obige Klasse prüft nicht nur die Eingabe gegen eine RegEx, sondern nimmt auch - wenn gewünscht - nur Eingaben bis zu einer vorgegeben Länge an.

    Mit
    [highlight=java]
    jTextField1.setDocument(new ValidateAusdruckAndTextLength("[a-zA-Z].*"));
    [/highlight]
    würde das TextField nur Buchstaben akzeptieren.

    Mit
    [highlight=java]
    jTextField1.setDocument(new ValidateAusdruckAndTextLength(10,"[a-zA-Z].*"));
    [/highlight]
    würde das TextField 10 Buchstaben akzeptieren
    Zuletzt editiert von Christian Marquardt; 29.12.2012, 15:32.
    Christian

    Comment


    • #3
      Danke Christian für deine Antwort. Ich frag hier nochmal wegen try/catch. Wo könnte ich es einbauen und vor allem wie? bzw. folgende Aufgabenstellung:

      Das Programm hat ein Fehlerhandling, welches
      die meisten der Eingabefehler und Programmfehler
      abfängt und verarbeitet. Es sollte mindestens
      eine eigene Exception geschrieben werden.
      Ich hoffe ihr könnt mir helfen.

      Comment


      • #4
        Du musst dir doch erst klar werden, was das Try/Catch prüfen soll; wobei es einen Fehler geben soll.

        Bsp. wenn jemand "Der Professor stellt programmtechnisch sinnvolle Aufgaben" eingibt, kann man eine Exception schmeissen
        Zuletzt editiert von Christian Marquardt; 29.12.2012, 17:21.
        Christian

        Comment


        • #5
          Originally posted by Christian Marquardt View Post
          Du musst dir doch erst klar werden, was das Try/Catch prüfen soll; wobei es einen Fehler geben soll
          Also:

          Ich hab 2 Radiobutton für Anzahl der Spieler 1 oder 2 (in einer Gruppe) für ein Memory spiel.
          Je-nachdem welchen Radiobutton ich anklicke erscheinen 1 oder 2 Textfelder wo ich jeweils den Namen des Spielers eintragen kann.
          Dieses Feld darf nicht Leer sein, sollte es doch so sein dann soll er mir in meinem JFrame unten in einem Textlabel sowas ausgeben wie: "Bitte tragen Sie den Namen ein!".
          Ist da ein Try/Catch möglich? Wenn ja wo könnte ich sowas dann doch einbauen? Habt ihr eine Idee?

          Comment


          • #6
            [highlight=java]

            if(jTextField1.getText().isEmpty()||jTextField2.ge tText().isEmpty())
            {
            jLabel1.setText("Textfelder dürfen nicht leer sein");
            throw new EmptyException ("Textfelder dürfen nicht leer sein");
            }

            [/highlight]

            Wie man eine eigene Exception macht, habe ich dir ja schon per PN gesagt
            Christian

            Comment

            Working...
            X