• java---金额中文大小写实时转换小程序


    本例演示一个String图形用户界面的完整应用程序,包括输入数据,
    显示结果,响应事件以及异常处理。
    输入一个实数表示金额,每次输入时显示该金额的中文大小写形式,运行窗口见最后。
    在窗口中,“金额”文本行可编辑,作为数据输入编辑框:“中文大写形式”
    文本仅显示结果,不可以编辑。金额文本行响应文本编辑事件。当输入数据
    错误时,进行异常处理,弹出一个对话框,给出提示信息。
    程序如下:

    package cn.hncu.gui3;
    
    import java.awt.Color;
    import java.awt.FlowLayout;
    import java.awt.Font;
    import java.awt.Label;
    
    import javax.swing.JDialog;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    import javax.swing.event.CaretEvent;
    import javax.swing.event.CaretListener;
    
    public class MoneyJFrame extends JFrame implements CaretListener {
        JTextField tfdMonry,tfdStr; 
        public MoneyJFrame(String str) {
            super(str);
            this.setBounds(300, 240, 500, 140);//(  x位置, y位置  , 宽度,高度)
            //this.setBackground(java.awt.Color.red);
            this.getContentPane().setBackground(Color.white);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setLayout(new FlowLayout(FlowLayout.RIGHT));
    
            Font font = new Font("a",Font.BOLD,20);
            JLabel lb = new JLabel("金额");
            lb.setFont(font);
            this.getContentPane().add(lb);
            tfdMonry = new JTextField("12345.67",20);
            tfdMonry.setFont(font);
            tfdMonry.setHorizontalAlignment(JTextField.RIGHT);
            this.getContentPane().add(tfdMonry);
    
            JLabel lb2 = new JLabel("中文大写形式");
            lb2.setFont(font);
            this.getContentPane().add(lb2);
            tfdStr = new JTextField(20);
            tfdStr.setFont(font);
            tfdStr.setHorizontalAlignment(JTextField.RIGHT);
            tfdStr.setEditable(false);//文本行设为只显示,不可编辑
            this.getContentPane().add(tfdStr);
    
            tfdMonry.addCaretListener(this);
            //注册文本编辑事件监听器
            this.setVisible(true);
        }
        @Override
        public void caretUpdate(CaretEvent e) {
    //      System.out.println("kkk");
            String str = tfdMonry.getText();
            try {
                double x = Double.parseDouble(str);
                tfdStr.setText(RMBtoString(x));
            } catch (NumberFormatException e1) {
                JDialog dlg = new JDialog(this,true);
                dlg.setSize(300,80);
    
                dlg.add(new JLabel(str+"不能转换成浮点数,请重新输入!"));
                int lx = this.getX();
                int ly = this.getY();
                dlg.setLocation(lx+20, ly+20);
                dlg.setVisible(true);
            }
    
        }
    
        private String RMBtoString(double x) {
            String digit = "零壹贰叁肆伍陆柒捌玖";
            String yuan = "亿千百拾万千百拾元角分";
    
            String result = "";
            int y =(int )(x*100+0.5);
            int i =yuan.length()-1;
            while(y>0 && i>0){
                String str = ""+digit.charAt(y%10)+yuan.charAt(i);
                result = str + result;
                y=y/10;
                i--;
            }
            //System.out.println("result");
            return result;
        }
    
        public static void main(String[] args) {
            new MoneyJFrame("金额的中文大写形式");
        }
    }
    

    正常转换:

    出异常处理:

  • 相关阅读:
    新年第一个项目思考
    ICP通讯(EN)
    将绝对路径变成URL路径(原创)
    [图像处理] 铁路轨道道岔检测(一)
    一个外国的好网站 http://www.ilovejackdaniels.com/
    内容全面的企业网站策划书
    asp.net2.0学习历程 菜鸟到中级程序员的飞跃
    TimeSpan 用法 求离最近发表时间的函数
    ASP.NE导出Excel
    在网页中,鼠标放在Flash链接上,光标形状会在手型和鼠标之间不停的闪 的解决办法
  • 原文地址:https://www.cnblogs.com/webmen/p/5739547.html
Copyright © 2020-2023  润新知