Eigene Funktion ist nicht MAC kompatibel *?*

PCD

Grünschnabel
In meinem Programm gibt es ein TextFeld das nur DoubleZahlen mit zwei Kommastellen zulässt. Auf Windows funktioniert es, auf Mac nicht? Warum. Ich habe den Code doch selber geschrieben.

Code:
jtf.setDocument(new EingabeDouble(jtf));

Code:
import java.awt.Toolkit;

import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

public class EingabeDouble extends PlainDocument {
   
   private boolean     punkt = false;
   private int             stellenNachKomma = 0;
   private JTextField  jtf = null;

   public EingabeDouble(JTextField txt) {
      this.jtf = txt;
   }

   public void insertString(int pos, String s, AttributeSet attributeSet) throws BadLocationException {      
      if(jtf.getText().toString().indexOf(",") == -1) {
         punkt = false;
      } else {
         punkt = true;         
        }

      try {
         if(s.indexOf(",") != -1 && s.length() > 1) {         
            punkt = true;
         }

         if (!s.equals(",")) {            
            Double.parseDouble(s);
            
         } else {
            if (punkt) {
               throw new Exception();
               
            } else {               
               punkt = true;
               
              }
           }
                  
         if(strAufZweiStellenTesten()) {
            throw new Exception();
         }

      } catch(Exception ex) {
         Toolkit.getDefaultToolkit().beep();
         return;
        }      
      
      try {
         if(!s.equals(",") && punkt) {
            stellenNachKomma++;
         }
                  
      } catch(Exception e) {
        }

      s = strAufNullVorDemKommaTesten(s);

      super.insertString(pos, s, attributeSet);
   }
   
   private String strAufNullVorDemKommaTesten(String s) {      
      if(jtf.getText().toString().isEmpty()) {
         if(s.equals(",")) {
            if(jtf.getText().indexOf(",") == -1) {         
               s = "0" + s;
            }
         }
      }
      
      return s;      
   }
   
   private boolean strAufZweiStellenTesten() {
      
      String s = jtf.getText();
      int    p = jtf.getText().indexOf(",");
             p++;
      int    l = jtf.getText().length();
      
      if(jtf.getText().toString().indexOf(",") != -1) {
         if((l-p) >= 2) {
            return true;         
         }   
      }

      return false;      
   }
}
 
Zurück