如鵬網 大學生計算機學習社區

          CowNew開源團隊

          http://www.cownew.com 郵件請聯系 about521 at 163.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            363 隨筆 :: 2 文章 :: 808 評論 :: 0 Trackbacks

           

          首先演示一個NumberFormatter的例子,在這個例子中要求用戶輸入一個數字,單擊按鈕后將用戶輸入的數字乘2以后重新賦值給輸入框。用戶輸入的數字必須大于0,小于100。

          package com.cownew.Char19;

          import java.awt.Font;

          import java.awt.Rectangle;

          import java.math.BigDecimal;

          import javax.swing.JButton;

          import javax.swing.JDialog;

          import javax.swing.JFormattedTextField;

          import javax.swing.JOptionPane;

          import javax.swing.JPanel;

          import javax.swing.text.NumberFormatter;

          import javax.swing.JTextField;

          public class NumberFormaterDialog1 extends JDialog

          {

          private JPanel jContentPane = null;

          private JFormattedTextField numTxtField = null;

          private JButton jButton = null;

          private JTextField jTextField = null;

          private JFormattedTextField getNumTxtField()

          {

          if (numTxtField == null)

          {

          NumberFormatter numFormater = new NumberFormatter();

          numFormater.setMaximum(new BigDecimal(100));

          numFormater.setMinimum(new BigDecimal(0));

          numTxtField = new JFormattedTextField(numFormater);

          numTxtField.setBounds(new Rectangle(56, 38, 154, 24));

          }

          return numTxtField;

          }

          private JButton getJButton()

          {

          if (jButton == null)

          {

          jButton = new JButton();

          jButton.setBounds(new Rectangle(78, 80, 81, 36));

          jButton.setFont(new Font("Dialog", Font.PLAIN, 18));

          jButton.setText("計算");

          jButton.addActionListener(new java.awt.event.ActionListener() {

          public void actionPerformed(java.awt.event.ActionEvent e)

          {

          BigDecimal oldValue = (BigDecimal) getNumTxtField()

          .getValue();

          if (oldValue != null)

          {

          getNumTxtField().setValue(

          oldValue.multiply(new BigDecimal(2)));

          }

          else

          {

          JOptionPane.showMessageDialog(

          NumberFormaterDialog1.this,"值非法");

          }

          }

          });

          }

          return jButton;

          }

          private JTextField getJTextField()

          {

          if (jTextField == null)

          {

          jTextField = new JTextField();

          jTextField.setBounds(new Rectangle(176, 83, 76, 22));

          }

          return jTextField;

          }

          public static void main(String[] args)

          {

          NumberFormaterDialog1 dlg = new NumberFormaterDialog1();

          dlg.show();

          }

          public NumberFormaterDialog1()

          {

          super();

          initialize();

          }

          private void initialize()

          {

          this.setSize(300, 200);

          this.setContentPane(getJContentPane());

          this.setTitle("JFrame");

          }

          private JPanel getJContentPane()

          {

          if (jContentPane == null)

          {

          jContentPane = new JPanel();

          jContentPane.setLayout(null);

          jContentPane.add(getNumTxtField(), null);

          jContentPane.add(getJButton(), null);

          jContentPane.add(getJTextField(), null);

          }

          return jContentPane;

          }

          }

          當我們輸入-3這個無效值的時候是允許輸入的,但是當鼠標焦點移動到另外的控件的時候,“-3”就會消失。這個行為可以通過NumberFormatter 的setAllowsInvalid方法來改變:

          圖 17.5

          圖 17.6

          如果輸入“10”這個合法的數字,單擊“計算”按鈕即可算出正確的值:

          圖 17.7

          圖 17.8

          案例系統中的com.cownew.ctk.ui.swing.JNumberTextField就是為了方便使用而從JFormattedTextField派生的一個數字輸入控件。

          DateFormatter的使用也是類似的,也允許設置最大最小值,實際上只要從InternationalFormatter派生的類,并且數據類型實現了Comparable接口都可以設置極值。

          MaskFormatter允許開發人員使用掩碼指定更加復雜的校驗規則。掩碼是一串特殊的字符串,每個字符的含義如下表所示:

          字符

          說明

          #

          匹配任何數字字符

          '

          轉義符,用來將格式字符當成普通字符用

          U

          任意大寫字母

          L

          任意小寫字母

          A

          任意數字或者字母

          ?

          任何字母

          *

          任何字符

          H

          任何十六進制字符 (0-9, a-f or A-F).

          實例化時指定其掩碼即可:

          MaskFormatter formatter = new MaskFormatter("0x***");

          formatter.setValidCharacters("0123456789abcdefABCDEF");

          還允許為掩碼設定占位符,這樣可用性更好:

          MaskFormatter formatter = new MaskFormatter("###-####");

          formatter.setPlaceholderCharacter('_');

          formatter.getDisplayValue(tf, "123");

          posted on 2007-04-26 09:29 CowNew開源團隊 閱讀(1603) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 新平| 颍上县| 阿拉善右旗| 右玉县| 普兰县| 中阳县| 东光县| 澜沧| 樟树市| 弥勒县| 和顺县| 新蔡县| 宝山区| 马尔康县| 甘南县| 来安县| 新宁县| 阿尔山市| 宝山区| 阳曲县| 且末县| 蓝田县| 旌德县| 公主岭市| 调兵山市| 新晃| 昌邑市| 乌什县| 仙桃市| 林甸县| 嘉峪关市| 德庆县| 乌审旗| 长垣县| 乌拉特前旗| 汝州市| 白朗县| 吉木乃县| 五莲县| 海城市| 山阴县|