Hallo zusammen!
Ich habe ein, vermutlich eigtl. leicht zu behebendes, Problem bei dem ich einfach nicht auf den Fehler komme.
In 2 Textfelder sollen Zahlen eingeben werden können (Dezimalstellen mit "."), die dann mit einer 3. Zahl aus einer JComboBox verrechnet werden.
Beide Textfelder dienen sowohl zur Eingabe als auch Ergebnislieferung.
Problem:
Geht ein eingegebener Wert in einem der Textfelder > 100.00 kommt ein solches Ergebnis heraus:
6.41.71
anstatt
641.71
[code=Java]
double unteresTextField= (number3 * 100 / number1);
// Hier wird das Ergebnis gekürzt auf 2 Nachkommastellen
DecimalFormat df = new DecimalFormat("##,##");
String ausgabeKurz = df.format(ausgabePreis);
this.oberesTextField.setText(" " + ausgabeKurz);
if (achtungLabel != null) {
this.achtungLabel.setText("");
}
[/code]
Problem 2:
Ein Textfeld soll mit einem InputVerifier die richtige Eingabe der Zahl prüfen.
Aber eingetippte, syntaktisch richtige Werte (10, 10.00 etc) werden nicht angenommen. Es erscheint nur die Fehlermeldung.
[code=Java]private void preisFlascheInputVerifier(java.awt.event.FocusEvent evt) {
InputVerifier verifier = new InputVerifier() {
public boolean verify(JComponent number2) {
final JTextComponent source = (JTextComponent) number2;
String preisFlascheText = source.getText();
if ((preisFlascheText.length() != 0) && !(preisFlascheText.equals(source))) {
JOptionPane.showMessageDialog(null,
"Bitte im Feld Flaschenpreis eine (zweistellige) Dezimalzahl eintragen.",
"Fehler", JOptionPane.ERROR_MESSAGE);
((JTextComponent) number2).requestFocusInWindow();
return false;
} else {
return true;
}
}
};
preisFlascheText.setInputVerifier(verifier);
} [/code]
Problem 3:
Das zweite Textfeld soll hingegen mit einem FocusListener auf richtige Eingabe geprüft werden. Bei ungültiger Eingabe erzeugt sich die Fehlermeldung aber 3x.
[code=Java]private void preisLiterFocusLost(java.awt.event.FocusEvent evt) {
ausgabeText.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusLost(java.awt.event.FocusEvent evt) {
}
});
if (!(ausgabeText instanceof JTextComponent)) {
return;
}
double number3 = new Double(0.0);
String inhalt = ((JTextComponent) ausgabeText).getText();
try {
number3 = (Double.parseDouble(inhalt));
}
catch (Exception e) {
if (inhalt.equals(ausgabeText)) {
return;
}else
// if (ausgabeText.getText().length() > 0)
{
JOptionPane.showMessageDialog(null,
"Bitte im Literpreis eine (zweistellige) Dezimalzahl eingeben.",
"Fehler", JOptionPane.ERROR_MESSAGE);
((JTextComponent) ausgabeText).requestFocusInWindow();
}}
} [/code]
Vielen Dank im Voraus für Anregungen und Hilfe.