JFormattedTextField für kg und Währung

Fohnbit

Top Contributor
Hallo,

ich kann mein JFormattedTextField zwar so formatieren:
Java:
NumberFormat formatWeight;

formatWeight = DecimalFormat.getInstance();
formatWeight.setMinimumFractionDigits(0);
formatWeight.setMaximumFractionDigits(3);
formatWeight.setRoundingMode(RoundingMode.HALF_UP);

JFormattedTextField dblWeight;

dblWeight = new JFormattedTextField(formatWeight);

Und formatiert die Eingabe wie ich es brauche.

Aber ich möchte gerne folgende Formatierungen haben:
1: "80,673 kg"
2: "34,34 €"
3: "80,56 m³"

Wie kann ich texte anhängen?

Danke!
 
Ich würde das zwar nicht im Textfeld machen, sondern einfach ein Label dahinterklemmen, aber funktionieren würde das so:
Java:
import java.awt.*;
import java.math.*;
import java.text.*;
import javax.swing.*;
import javax.swing.text.*;

public class Test {
    private static DecimalFormat newDecimalFormat(String suffix) {
        DecimalFormat df = new DecimalFormat();
        df.setMinimumFractionDigits(0);
        df.setMaximumFractionDigits(3);
        df.setRoundingMode(RoundingMode.HALF_UP);
        df.setPositiveSuffix(suffix);
        df.setNegativeSuffix(suffix);        
        return df;
    }

    private static JFormattedTextField newNumberField(NumberFormat display,
            NumberFormat edit) {
        JFormattedTextField tf = new JFormattedTextField(
                new DefaultFormatterFactory(
                    new NumberFormatter(display),
                    new NumberFormatter(display),
                    new NumberFormatter(edit)));
        tf.setValue(0);
        tf.setColumns(20);
        return tf;
    }

    public void run() {
        DecimalFormat editFormat = newDecimalFormat("");
        DecimalFormat weightDisplayFormat = newDecimalFormat(" kg");
        DecimalFormat moneyDisplayFormat = (DecimalFormat) DecimalFormat.getCurrencyInstance();
        DecimalFormat volumeDisplayFormat = newDecimalFormat(" m\u00b3");

        Box box = Box.createVerticalBox();
        box.add(newNumberField(weightDisplayFormat, editFormat));
        box.add(newNumberField(moneyDisplayFormat, editFormat));
        box.add(newNumberField(volumeDisplayFormat, editFormat));        

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(box, BorderLayout.NORTH);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new Test().run());
    }
}
 
Dennoch, so etwas sollte aus Sicherheitsgründen fest codiert sein.... Also dafür würde ich Abzüge in der B-Note geben
 

Neue Themen


Zurück
Oben