Auf Thema antworten

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.



Oben