如何定义一个只能输入汉字和字母的组件?

解决方案 »

  1.   

    我Blog中有个小例子,希望对你有帮助:http://blog.csdn.net/mq612/archive/2006/09/29/1305413.aspx
      

  2.   

    /**
     * 測試JTextField只能輸入字母,包括中文字符\其他字符,
     * 沒有檢測拷貝內容是否符合規則,可屏蔽粘貼快捷鍵或者同下處理粘貼
     */
    import java.awt.Toolkit;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;import javax.swing.JFrame;
    import javax.swing.JTextField;public class JTextFieldTest 
    {
    private JFrame jFrame;
    private JTextField jTextField;

    private static final int width = 100;
    private static final int height = 50;

    public JTextFieldTest()
    {
    init();
    }

    private void init()
    {
    jFrame = new JFrame("JTextFieldTest");
    jFrame.setSize(width,height);
    jFrame.setResizable(false);
    jFrame.setLocation(Toolkit.getDefaultToolkit().getScreenSize().width/2-jFrame.getWidth()/2, 
    Toolkit.getDefaultToolkit().getScreenSize().height/2-jFrame.getHeight()/2);

    jTextField = new JTextField();
    jTextField.setSize((int)0.8*width, (int)0.8*height);

    jTextField.addKeyListener(new KeyAdapter()
    {
    public void keyTyped(KeyEvent e) 
    {
    if(!Character.isLetter(e.getKeyChar()))
         {
         e.consume();
         }
    }
        /**
         * Invoked when a key has been pressed.
         */
       public void keyPressed(KeyEvent e) 
       {
        
       }     /**
         * Invoked when a key has been released.
         */
        public void keyReleased(KeyEvent e) {}
    });

    jFrame.add(jTextField);
    jFrame.setVisible(true);
    jFrame.addWindowListener(new WindowAdapter()
    {  
        public void windowClosing(WindowEvent e)
    {  
          System.exit(0);
    }
    } );
    }

    public static void main(String[] args)
    {
    new JTextFieldTest();
    }
    }