2013-05-22 2 views
3

Я новичок в Java В моей первой программе Java (с использованием Netbeans) я хочу добавить номер автоформата ввода с точкой "." разделитель с использованием поля JTextfield. Вот мой короткий код:Сделать номер автоформата поля ввода с разделителем точек с использованием JTextfield в Java (Netbeans)

private void PayTransKeyReleased(java.awt.event.KeyEvent evt) {          
// TODO add your handling code here: 
String b; 
b = PayTrans.getText(); 
if (b.isEmpty()){ 
    b = "0"; 
} 
else { 
    b = b.replace(".",""); 
    b = NumberFormat.getNumberInstance(Locale.ENGLISH).format(Double.parseDouble(b)); 
    b = b.replace(",", "."); 
} 
PayTrans.setText(b); 
} 

Но я чувствую себя менее совершенным, потому что каретка/курсор не может перемещаться с помощью клавиши со стрелкой на клавиатуре. Я пытаюсь найти лучший код, но я никогда не нахожу его. У кого-нибудь есть решения? Благодарю.

ответ

3

Вместо этого вы должны использовать JFormattedTextField.

private DecimalFormatSymbols dfs; 
private DecimalFormat dFormat; 

dfs = new DecimalFormatSymbols(); 
dfs.setDecimalSeparator('.'); //separator for the decimals 
dfs.setGroupingSeparator(','); //separator for the thousands 
dFormat = new DecimalFormat ("#0.##", dfs); 

JFormattedTextField ftf = new JFormattedTextField(dFormat); 

Here's ссылка о настройке формата.

+0

Спасибо, хорошая идея. Но результаты не отображаются непосредственно в JFormattedTextField, когда я печатаю число тысяч. Результат - это новый вид, когда я перемещаю фокус на другой объект. – repot

+0

Так работает JFormattedTextField. Возможно, вы сможете проверить эту ссылку http://stackoverflow.com/questions/8383975/let-actionlistener-listen-for-change-in-jtextfield-instead-of-only-enter –

0

Изменить языковой стандарт.

В ENGLISH разделитель тысяч , и десятичный разделитель .. На континентальном языке, например, FRENCH, это наоборот.

Вы также можете анализировать номера в знании, установленном локали, с помощью NumberFormat. Вам не нужно заменять.

+0

Спасибо, я изменился на НЕМЕЦКИЙ. – repot