十进制格式演示 : 数字格式 « 数据类型 « Java

En
Java
1. 图形用户界面
2. 三维图形动画
3. 高级图形
4. 蚂蚁编译
5. Apache类库
6. 统计图
7. 
8. 集合数据结构
9. 数据类型
10. 数据库JDBC
11. 设计模式
12. 开发相关类
13. EJB3
14. 电子邮件
15. 事件
16. 文件输入输出
17. 游戏
18. 泛型
19. GWT
20. Hibernate
21. 本地化
22. J2EE平台
23. 基于J2ME
24. JDK-6
25. JNDI的LDAP
26. JPA
27. JSP技术
28. JSTL
29. 语言基础知识
30. 网络协议
31. PDF格式RTF格式
32. 映射
33. 常规表达式
34. 脚本
35. 安全
36. Servlets
37. Spring
38. Swing组件
39. 图形用户界面
40. SWT-JFace-Eclipse
41. 线程
42. 应用程序
43. Velocity
44. Web服务SOA
45. 可扩展标记语言
Java 教程
Java » 数据类型 » 数字格式屏幕截图 
十进制格式演示
十进制格式演示
  
/*
 * Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 *   - Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 *
 *   - Redistributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in the
 *     documentation and/or other materials provided with the distribution.
 *
 *   - Neither the name of Sun Microsystems nor the names of its
 *     contributors may be used to endorse or promote products derived
 *     from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

import java.awt.Color;
import java.awt.Component;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.Locale;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class DecimalFormatDemo extends JPanel {

  static JFrame frame;
  JLabel result;
  NumberFormat inputFormatter;
  String currentPattern;
  double currentNumber = 123.45;
  LocaleGroup availableLocales;

  public DecimalFormatDemo() {

    availableLocales = new LocaleGroup();
    inputFormatter = NumberFormat.getNumberInstance();

    String[] patternExamples = "##.##""###,###.##""##,##,##.##""#",
        "000,000.0000""##.0000""'hello'###.##" };

    currentPattern = patternExamples[0];

    // Set up the UI for entering a number.
    JLabel numberLabel = new JLabel("Enter the number to format:");
    numberLabel.setAlignmentX(Component.LEFT_ALIGNMENT);

    JTextField numberField = new JTextField();
    numberField.setEditable(true);
    numberField.setAlignmentX(Component.LEFT_ALIGNMENT);
    NumberListener numberListener = new NumberListener();
    numberField.addActionListener(numberListener);

    // Set up the UI for selecting a pattern.
    JLabel patternLabel1 = new JLabel("Enter the pattern string or");
    JLabel patternLabel2 = new JLabel("select one from the list:");
    patternLabel1.setAlignmentX(Component.LEFT_ALIGNMENT);
    patternLabel2.setAlignmentX(Component.LEFT_ALIGNMENT);

    JComboBox patternList = new JComboBox(patternExamples);
    patternList.setSelectedIndex(0);
    patternList.setEditable(true);
    patternList.setAlignmentX(Component.LEFT_ALIGNMENT);
    PatternListener patternListener = new PatternListener();
    patternList.addActionListener(patternListener);

    // Set up the UI for selecting a locale.
    JLabel localeLabel = new JLabel("Select a Locale from the list:");
    localeLabel.setAlignmentX(Component.LEFT_ALIGNMENT);

    JComboBox localeList = new JComboBox(availableLocales.getStrings());
    localeList.setSelectedIndex(0);
    localeList.setAlignmentX(Component.LEFT_ALIGNMENT);
    LocaleListener localeListener = new LocaleListener();
    localeList.addActionListener(localeListener);

    // Create the UI for displaying result.
    JLabel resultLabel = new JLabel("Result", JLabel.LEFT);
    resultLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
    result = new JLabel(" ");
    result.setForeground(Color.black);
    result.setAlignmentX(Component.LEFT_ALIGNMENT);
    result.setBorder(BorderFactory.createCompoundBorder(BorderFactory
        .createLineBorder(Color.black), BorderFactory.createEmptyBorder(55,
        55)));

    // Lay out everything
    JPanel numberPanel = new JPanel();
    numberPanel.setLayout(new GridLayout(01));
    numberPanel.add(numberLabel);
    numberPanel.add(numberField);

    JPanel patternPanel = new JPanel();
    patternPanel.setLayout(new BoxLayout(patternPanel, BoxLayout.Y_AXIS));
    patternPanel.add(patternLabel1);
    patternPanel.add(patternLabel2);
    patternPanel.add(patternList);

    JPanel localePanel = new JPanel();
    localePanel.setLayout(new BoxLayout(localePanel, BoxLayout.Y_AXIS));
    localePanel.add(localeLabel);
    localePanel.add(localeList);

    JPanel resultPanel = new JPanel();
    resultPanel.setLayout(new GridLayout(01));
    resultPanel.add(resultLabel);
    resultPanel.add(result);

    setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
    patternPanel.setAlignmentX(Component.CENTER_ALIGNMENT);
    numberPanel.setAlignmentX(Component.CENTER_ALIGNMENT);
    localePanel.setAlignmentX(Component.CENTER_ALIGNMENT);
    resultPanel.setAlignmentX(Component.CENTER_ALIGNMENT);

    add(numberPanel);
    add(Box.createVerticalStrut(10));
    add(patternPanel);
    add(Box.createVerticalStrut(10));
    add(localePanel);
    add(Box.createVerticalStrut(10));
    add(resultPanel);

    setBorder(BorderFactory.createEmptyBorder(10101010));

    reformat();
    numberField.setText(result.getText());

  // constructor

  /** Listens to the pattern combo box. */
  class PatternListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      JComboBox cb = (JComboBoxe.getSource();
      String newSelection = (Stringcb.getSelectedItem();
      currentPattern = newSelection;
      reformat();
    }
  }

  /** Listens to the number field. */
  class NumberListener implements ActionListener {
    public void actionPerformed(ActionEvent evt) {
      JTextField inputField = (JTextFieldevt.getSource();
      try {
        Number value = inputFormatter.parse(inputField.getText());
        currentNumber = value.doubleValue();
        reformat();
      catch (ParseException pe) {
        result.setForeground(Color.red);
        result.setText("Illegal Number: " + pe.getMessage());
      }
    }
  }

  /** Listens to the locale combo box. */
  class LocaleListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      JComboBox cb = (JComboBoxe.getSource();
      int index = cb.getSelectedIndex();
      availableLocales.setCurrent(index);
      reformat();
    }
  }

  /** Manages information about locales for this application. */
  class LocaleGroup {

    Locale currentLocale;
    Locale[] supportedLocales = Locale.US, Locale.GERMANY, Locale.FRANCE
    // Add other locales here, if desired.
    };

    public LocaleGroup() {
      currentLocale = supportedLocales[0];
    }

    public void setCurrent(int index) {
      currentLocale = supportedLocales[index];
    }

    public Locale getCurrent() {
      return currentLocale;
    }

    public String[] getStrings() {
      String[] localeNames = new String[supportedLocales.length];
      for (int k = 0; k < supportedLocales.length; k++) {
        localeNames[k= supportedLocales[k].getDisplayName();
      }
      return localeNames;
    }
  }

  /** Reformats the input number and displays result. */
  public void reformat() {
    try {
      NumberFormat nf = NumberFormat.getNumberInstance(availableLocales
          .getCurrent());
      DecimalFormat df = (DecimalFormatnf;
      df.applyPattern(currentPattern);
      result.setForeground(Color.black);
      result.setText(df.format(currentNumber));
    catch (IllegalArgumentException iae) {
      result.setForeground(Color.red);
      result.setText("Illegal Pattern: " + iae.getMessage());
    }
  }

  public static void main(String s[]) {
    WindowListener l = new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    };

    frame = new JFrame("DecimalFormat Demo");
    frame.addWindowListener(l);
    frame.getContentPane().add("Center"new DecimalFormatDemo());
    frame.pack();
    frame.setVisible(true);
  }
}

   
    
  
Related examples in the same category
1. The Uppercase Option
2. Using the Format Flags
3. 格式说明符
4. NumberFormat with Constant Locale UsageNumberFormat with Constant Locale Usage
5. Number Format by locale
6. demonstrates the %n and %% format specifiers:
7. demonstrates the minimum field-width specifier by applying it to the %f conversion:
8. Create a table of squares and cubes.
9. precision modifier: Format 4 decimal places
10. precision modifier: Format to 2 decimal places in a 16 character field
11. precision modifier: Display at most 15 characters in a string
12. left justification: Right justify by default
13. left justification: left justify
14. Demonstrate the space format specifiers.
15. 使用参数指数
16. the NumberFormat object is created once when the program starts.
17. 默认情况下四舍五入模式
18. RoundingMode.HALF_DOWN
19. RoundingMode.FLOOR
20. RoundingMode.CEILING
21. Format a number our way and the default way
22. Number Format Test Number Format Test
23. Format a number to currencyFormat a number to currency
24. 数字格式的设置数字格式的设置
25. 添加前置零若干
26. Parse number with NumberFormat and Locale
27. Formatting and Parsing a Locale-Specific Percentage
28. Format a number with DecimalFormat
29. Parse a number with NumberFormat and Locale.CANADA
30. Format a number with leading zeroes
31. Format a number for a locale
32. Formatting and Parsing a Number for a Locale
33. 显示号码,科学记数法
34. 格式为德国的locale
35. 格式为默认的locale
36. 显示号码用逗号
37. 格式中的数字指数符号
38. Using only 0's to the left of E forces no decimal point
39. 解析德国号码
40. 格式和解析当地的特定货币
41. 剖析了一些地区的
42. Use grouping to display a number
43. 数字格式查看器
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.