0

JFormattedTextField小数点なしで通貨形式を受け入れるようにコーディングするにはどうすればよいですか?

私はどこでも私の答えを探してみました。ここでは、Oracle、Google、および Code Ranch を具体的に説明します。

私の質問: フォーマットされたテキスト フィールドをコーディングして、小数点なしで通貨フォーマットを受け入れるにはどうすればよいですか。テキスト フィールドは、$5 から $10,000,000 までの値を受け入れることができます。必要に応じて「、」を含めてほしい。このフィールドは数式には使用されないため、文字列から変換する必要はありません。

これが私が使用しようとしているコードです。この形式では、書式設定されたテキスト フィールドに数字をまったく入力できません。

buildInfo メソッド

//The buildInfo method will build the info panel
private void buildInfo()
{
    info = new JPanel();
    GridLayout gl = new GridLayout (3,1);
    info.setLayout (gl);

    //Create panel, label, and text area for pledgers name
    p1 = new JPanel();
    p1.setLayout(new FlowLayout(FlowLayout.LEFT));
    label1 = new JLabel ("Pledger's Name:  ");
    p1.add (label1);
    text1 = new JTextField (20);
    p1.add (text1);

    //Create panel, label, and text area for pledge amount
    p2 = new JPanel();
    p2.setLayout(new FlowLayout(FlowLayout.LEFT));
    label2 = new JLabel ("Pledged Amount: ");
    p2.add (label2);
    NumberFormat amount = NumberFormat.getCurrencyInstance(Locale.US);
    amount.setMaximumFractionDigits(0);
    NumberFormatter pAmount = new NumberFormatter(amount);
    pAmount.setMinimum(5.0);
    pAmount.setMaximum(10000000.0);
    pAmount.setAllowsInvalid(false);
    text2 = new JFormattedTextField (pAmount);
    text2.setColumns(12);
    p2.add (text2);

    //Create panel, label, and text area for charity being pledged
    p3 = new JPanel();
    p3.setLayout(new FlowLayout(FlowLayout.LEFT));
    label3 = new JLabel ("Charity Pledged To:");
    p3.add (label3);
    text3 = new JTextField (20);
    p3.add (text3);

    //Add panels to main panel
    add(p1);
    add(p2);
    add(p3);
}
4

1 に答える 1

5

使用する

NumberFormat format = NumberFormat.getCurrencyInstance(Locale.US);
format.setMaximumFractionDigits(0);

NumberFormatter formatter = new NumberFormatter(format);
formatter.setMinimum(5.0);
formatter.setMaximum(10000000.0);
formatter.setAllowsInvalid(false);
formatter.setOverwriteMode(true);

JFormattedTextField field = new JFormattedTextField(formatter);
field.setValue(5.0);
于 2013-06-22T02:23:19.540 に答える