Trouble in entering numbers after decimal points - JFormattedTextField

K

kishanthany

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();
}
}
 
H

hiwa

(e-mail address removed) ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸:
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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,733
Messages
2,569,440
Members
44,830
Latest member
ZADIva7383

Latest Threads

Top