Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于接受不带小数的货币格式的JFormattedTextField_Java_Swing_Jformattedtextfield_Currency Formatting - Fatal编程技术网

Java 用于接受不带小数的货币格式的JFormattedTextField

Java 用于接受不带小数的货币格式的JFormattedTextField,java,swing,jformattedtextfield,currency-formatting,Java,Swing,Jformattedtextfield,Currency Formatting,如何对JFormattedTextField进行编码以接受不带小数的货币格式 我试着到处寻找我的答案。在这里,Oracle、Google和CodeRanch是具体的 我的问题:如何对格式化文本字段进行编码,以接受不带小数的货币格式。文本字段可以接受从$5到$10000000的任意值。我想在需要的时候把它包括在内。此字段不用于数学表达式,因此无需将其从字符串转换 下面是我正在尝试使用的代码。此格式不允许我在格式化文本字段中输入任何数字 buildInfo方法 //The buildInfo met

如何对
JFormattedTextField
进行编码以接受不带小数的货币格式

我试着到处寻找我的答案。在这里,Oracle、Google和CodeRanch是具体的

我的问题:如何对格式化文本字段进行编码,以接受不带小数的货币格式。文本字段可以接受从$5到$10000000的任意值。我想在需要的时候把它包括在内。此字段不用于数学表达式,因此无需将其从字符串转换

下面是我正在尝试使用的代码。此格式不允许我在格式化文本字段中输入任何数字

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);
}
使用

使用


您不需要指定区域设置:
java.util.Currency usd=java.util.Currency.getInstance(“usd”)然后
格式设置货币(美元)?仅当
Locale.US
不是默认的
Locale
@Reimeus时,我尝试了您发布的代码,现在它不会在文本字段中输入任何内容。将初始值设置为“激活”字段。此外,允许覆盖也会有所帮助。请参阅updatesthank,了解如何处理初始值,但现在问题出在操作侦听器中,该侦听器将新条目的值重置为null。我可以得到重置值,但它不需要,除了这里的输入是操作侦听器'code'私有类NewListener实现ActionListener的代码{@Override public void actionPerformed(ActionEvent n){text1.setText(“”);text2.setValue(0.0);text3.setText(“”;}}}}思想?您不需要指定区域设置:
java.util.Currency usd=java.util.Currency.getInstance(“usd”);
then
format.setCurrency(usd)
?仅当
Locale.US
不是默认的
Locale
@Reimeus我尝试了您发布的代码,现在它不会在文本字段中输入任何内容。将初始值设置为“activate”字段。还允许覆盖将有所帮助。请参阅更新感谢您为初始值工作,但现在问题在于操作侦听器中,该侦听器将新条目的值重置为null。我可以重置值,但不包括输入。这里是操作侦听器“代码”的代码私有类NewListener实现ActionListener{@Override public void actionPerformed(ActionEvent n){text1.setText(“”);text2.setValue(0.0);text3.setText(“”;}}}?
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);