自扩展JTextField-2


 1 import  java.awt. * ;
 2 import  javax.swing. * ;
 3 import  javax.swing.text. * ;
 4 import  java.awt.event. * ;
 5
 6 public   class  TextFieldDemo  extends  JFrame
 7 {
 8      public  TextFieldDemo()
 9      {
10
11         Container contentPane =   this .getContentPane();
12
13         contentPane.setLayout( new  FlowLayout());
14          // 内容窗格容器中加入两个文本组件,第一个只能输入数字        
15         DigitalText txtDigitalText  =   new  DigitalText( 10 );
16         JTextField txtNormal  =   new  JTextField( 10 );
17          // JTextArea txtNormal=new JTextArea();
18         contentPane.add( new  JLabel( " 数字文本框 " ));
19         contentPane.add(txtDigitalText);
20         contentPane.add( new  JLabel( " 任意文本框 " ));
21         contentPane.add(txtNormal);
22
23         pack();
24         setVisible( true );
25         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
26     }

27
28      public   static   void  main(String args[]) 
29      {
30          TextFieldDemo frame  =   new  TextFieldDemo();
31     }

32 }

33 // 该类从JTextField中派生,只允许用户输入数字
34 class  DigitalText  extends  JTextField
35 {
36      public  DigitalText()
37      {
38     }

39         public  DigitalText(  int  column)
40      {
41          super (column);
42     }

43      public  DigitalText(String strText,  int  column)
44      {
45          super (strText,column);
46     }

47      protected  Document createDefaultModel()
48      {
49          return   new  DigitalTextDocument();
50     }

51     
52      class  DigitalTextDocument  extends  PlainDocument
53      {
54          public   void  insertString(  int  offs, String str, AttributeSet a)  throws  BadLocationException
55          {
56              if ( str  ==   null  )  return ;
57              try
58              {
59                 Integer.parseInt(str);
60                  super .insertString(offs,str,a);
61             }

62              catch  ( NumberFormatException e)
63              {
64                 JOptionPane.showMessageDialog( null , " 请输入数字。 " , " 验证错误 " ,JOptionPane.ERROR_MESSAGE);                
65             }

66         }

67     }

68 }

你可能感兴趣的:(自扩展JTextField-2)