java保存数字_Java:JFormattedTextField保存数字

即使JFormattedTextField实现DecimalFormat和NumberFormat ,也会使用DocumentListener ,

1)通过使用DecimalFormat或NumberFormat简单的User-non-Acceptable通过实现setMinimum()和setMaximum()

2) JTextComponents在默认情况下实现插入文本,然后通过实现setMinimum()和setMaximum()来实现具有DecimalFormat或NumberFormat的JFormattedTextField User-non-Acceptable的任何解决方法。

3)它非常舒适的使用DocumentListener允许添加任何数量,但突出显示范围

4)或与SpinnerNumberModel使用JSpinner ,可以将Formatter设置为Number Instance

例如将InternationalFormatter和DocumentListener结合在一起

import java.awt.*; import java.awt.font.TextAttribute; import java.math.*; import java.text.*; import java.util.Map; import javax.swing.*; import javax.swing.JFormattedTextField.*; import javax.swing.event.*; import javax.swing.text.InternationalFormatter; public class DocumentListenerAdapter { public static void main(String args[]) { JFrame frame = new JFrame("AbstractTextField Test"); final JFormattedTextField textField1 = new JFormattedTextField(new Float(10.01)); textField1.setFormatterFactory(new AbstractFormatterFactory() { @Override public AbstractFormatter getFormatter(JFormattedTextField tf) { NumberFormat format = DecimalFormat.getInstance(); format.setMinimumFractionDigits(2); format.setMaximumFractionDigits(2); format.setRoundingMode(RoundingMode.HALF_UP); InternationalFormatter formatter = new InternationalFormatter(format); formatter.setAllowsInvalid(false); formatter.setMinimum(0.0); formatter.setMaximum(1000.00); return formatter; } }); final Map attributes = (new Font("Serif", Font.BOLD, 16)).getAttributes(); attributes.put(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON); final JFormattedTextField textField2 = new JFormattedTextField(new Float(10.01)); textField2.setFormatterFactory(new AbstractFormatterFactory() { @Override public AbstractFormatter getFormatter(JFormattedTextField tf) { NumberFormat format = DecimalFormat.getInstance(); format.setMinimumFractionDigits(2); format.setMaximumFractionDigits(2); format.setRoundingMode(RoundingMode.HALF_UP); InternationalFormatter formatter = new InternationalFormatter(format); formatter.setAllowsInvalid(false); //formatter.setMinimum(0.0); //formatter.setMaximum(1000.00); return formatter; } }); textField2.getDocument().addDocumentListener(new DocumentListener() { @Override public void changedUpdate(DocumentEvent documentEvent) { printIt(documentEvent); } @Override public void insertUpdate(DocumentEvent documentEvent) { printIt(documentEvent); } @Override public void removeUpdate(DocumentEvent documentEvent) { printIt(documentEvent); } private void printIt(DocumentEvent documentEvent) { DocumentEvent.EventType type = documentEvent.getType(); double t1a1 = (((Number) textField2.getValue()).doubleValue()); if (t1a1 > 1000) { Runnable doRun = new Runnable() { @Override public void run() { textField2.setFont(new Font(attributes)); textField2.setForeground(Color.red); } }; SwingUtilities.invokeLater(doRun); } else { Runnable doRun = new Runnable() { @Override public void run() { textField2.setFont(new Font("Serif", Font.BOLD, 16)); textField2.setForeground(Color.black); } }; SwingUtilities.invokeLater(doRun); } } }); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(textField1, BorderLayout.NORTH); frame.add(textField2, BorderLayout.SOUTH); frame.setVisible(true); frame.pack(); } private DocumentListenerAdapter() { } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值