P
PCD
Gast
In meinem Programm gibt es ein TextFeld das nur DoubleZahlen mit zwei Komma Stellen zulässt. Auf Windows funktioniert es, auf Mac nicht? Warum. Ich habe den Code 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;
}
}