のメッセージ:
> Hey!
>
> I'm having problem with entering numbers after decimal point. I 've set
> two numbers after decimal point. when I add first time it's working.
> When try to override it takes third number & rounding it off and adding
> it.
>
> If I enable override mode enable when I entering number reaches cmmma
> (,) with out problem but afterwards it takes next two digits after
> decimal point addes with entered number.
>
> I tried my best to solve it. please someone help me to sort out this
> problem..
>
> I've added my code here you can test and give me some idea..
>
>
> import javax.swing.JFrame;
> import javax.swing.JPanel;
> import java.text.DecimalFormat;
> import java.text.NumberFormat;
> import javax.swing.text.NumberFormatter;
> import javax.swing.text.DefaultFormatterFactory;
> import javax.swing.JTextField;
> import javax.swing.JFormattedTextField;
> import javax.swing.text.DefaultFormatter;
> import java.math.BigDecimal;
> import java.util.Locale;
> import java.text.*;
> import javax.swing.text.MaskFormatter;
>
> public class NumberCellEditor{
> DecimalFormat numberFormat;
> JFrame frame;
> JFormattedTextField text,text1;
> JPanel panel;
>
> public void create(){
>
> text=new JFormattedTextField();
> text1=new JFormattedTextField();
>
> numberFormat = (DecimalFormat) NumberFormat.getNumberInstance();
>
> numberFormat.setDecimalSeparatorAlwaysShown(true);
>
> numberFormat.setMinimumFractionDigits(2);
>
> NumberFormatter numFormatter = new
> NumberFormatter(numberFormat);
>
> numFormatter.setAllowsInvalid(false);
> numFormatter.setFormat(numberFormat);
> //numFormatter.setOverwriteMode(true);
>
>
> text.setValue(new Float(0.0F));
> text.setFormatterFactory(new
> DefaultFormatterFactory(numFormatter));
> text.setHorizontalAlignment(JTextField.TRAILING);
>
> }
>
> public void createComp(){
> frame=new JFrame(" TEST 2");
>
> panel=new JPanel();
> panel.setLayout(null);
> create();
> text.setBounds(100,100,100,30);
> text1.setBounds(100,200,100,30);
> panel.add(text);
> panel.add(text1);
>
>
> frame.getContentPane().add(panel);
> frame.setSize(300,300);
> frame.setVisible(true);
>
> }
> public static void main (String [] args){
> NumberCellEditor n=new NumberCellEditor();
> n.createComp();
> }
> }
The most flexible way would be to use a DocumentFilter.
Sorry I do not have enough time to write an example.