小弟想用FocusAdapter为3个TextField做焦点监听器,主要是监听在这3个TextField组件里输入的内容是否合法,不合法的话,只要焦点一转移回谈出一个对话框,并且焦点会回到那个内容不合法的TextField上

解决方案 »

  1.   

    private void initComponents() {
            java.awt.GridBagConstraints gridBagConstraints;        jLabel1 = new javax.swing.JLabel();
            jTextField1 = new javax.swing.JTextField();
            jLabel2 = new javax.swing.JLabel();
            jTextField2 = new javax.swing.JTextField();
            jLabel3 = new javax.swing.JLabel();
            jComboBox1 = new javax.swing.JComboBox();
            jLabel4 = new javax.swing.JLabel();
            jTextField4 = new javax.swing.JTextField();
            buttonPanel = new javax.swing.JPanel();
            okButton = new javax.swing.JButton();
            cancelButton = new javax.swing.JButton();        setLayout(new java.awt.GridBagLayout());        jLabel1.setText("\u516c\u53f8\u540d\uff1a");
            gridBagConstraints = new java.awt.GridBagConstraints();
            gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHEAST;
            gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0);
            add(jLabel1, gridBagConstraints);        jTextField1.setColumns(15);
            jTextField1.addFocusListener(new java.awt.event.FocusAdapter() {
                public void focusLost(java.awt.event.FocusEvent evt) {
                    TextFieldFocusLost(evt);
                }
            });        gridBagConstraints = new java.awt.GridBagConstraints();
            gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST;
            gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0);
            add(jTextField1, gridBagConstraints);        jLabel2.setText("\u804c\u4f4d\uff1a");
            gridBagConstraints = new java.awt.GridBagConstraints();
            gridBagConstraints.gridx = 0;
            gridBagConstraints.gridy = 1;
            gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHEAST;
            gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0);
            add(jLabel2, gridBagConstraints);        jTextField2.setColumns(15);
            jTextField2.addFocusListener(new java.awt.event.FocusAdapter() {
                public void focusLost(java.awt.event.FocusEvent evt) {
                    TextFieldFocusLost(evt);
                }
            });        gridBagConstraints = new java.awt.GridBagConstraints();
            gridBagConstraints.gridx = 1;
            gridBagConstraints.gridy = 1;
            gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST;
            gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0);
            add(jTextField2, gridBagConstraints);        jLabel3.setText("\u7f51\u7ad9\uff1a");
            gridBagConstraints = new java.awt.GridBagConstraints();
            gridBagConstraints.gridx = 0;
            gridBagConstraints.gridy = 2;
            gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHEAST;
            gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0);
            add(jLabel3, gridBagConstraints);        jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "\u667a\u8054\u62db\u8058", "ChinaHR.com", "51job.com" }));
            gridBagConstraints = new java.awt.GridBagConstraints();
            gridBagConstraints.gridx = 1;
            gridBagConstraints.gridy = 2;
            gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST;
            gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0);
            add(jComboBox1, gridBagConstraints);        jLabel4.setText("E-mail\uff1a");
            gridBagConstraints = new java.awt.GridBagConstraints();
            gridBagConstraints.gridx = 0;
            gridBagConstraints.gridy = 3;
            gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHEAST;
            gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0);
            add(jLabel4, gridBagConstraints);        jTextField4.setColumns(15);
            jTextField4.addFocusListener(new java.awt.event.FocusAdapter() {
                public void focusLost(java.awt.event.FocusEvent evt) {
                    TextFieldFocusLost(evt);
                }
            });        gridBagConstraints = new java.awt.GridBagConstraints();
            gridBagConstraints.gridx = 1;
            gridBagConstraints.gridy = 3;
            gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST;
            gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0);
            add(jTextField4, gridBagConstraints);        buttonPanel.setLayout(new java.awt.GridBagLayout());        okButton.setText("\u6dfb\u52a0");
            buttonPanel.add(okButton, new java.awt.GridBagConstraints());        cancelButton.setText("\u53d6\u6d88");
            gridBagConstraints = new java.awt.GridBagConstraints();
            gridBagConstraints.insets = new java.awt.Insets(0, 20, 0, 0);
            buttonPanel.add(cancelButton, gridBagConstraints);        gridBagConstraints = new java.awt.GridBagConstraints();
            gridBagConstraints.gridx = 1;
            gridBagConstraints.gridy = 4;
            gridBagConstraints.insets = new java.awt.Insets(15, 0, 0, 0);
            add(buttonPanel, gridBagConstraints);    }
      

  2.   

    private void TextFieldFocusLost(java.awt.event.FocusEvent evt) {                                    
            if(!evt.isTemporary()){
                if(!selectField(evt.getComponent()).isFocusOwner()){
                        selectField(evt.getComponent()).requestFocusInWindow();
                        System.out.println("我是焦点");
                }
                if(!checkField(selectField(evt.getComponent())));
            }
        }                                   
        
        private void errorTreatmentField(javax.swing.JTextField field){
            
            field.selectAll();
            field.requestFocusInWindow();
            javax.swing.JOptionPane.showMessageDialog(null, 
                message,
                "Invalid Value",
                javax.swing.JOptionPane.WARNING_MESSAGE);
        }
        
        private boolean checkField(javax.swing.JTextField field){
            return isValidMatch(field.getText(),regex);
        }
        
        private javax.swing.JTextField selectField(java.awt.Component component){
            if(component == jTextField1){
                message = "输入的公司名信息错误.\n输入的字符只能为 字母 汉字 空格 小括号 - \n请重新输入.";
                regex = "[-a-zA-Z() \u4E00-\u9FA5]{1,25}";
                return jTextField1;
            }else if(component == jTextField2){
                message = "输入的职位信息错误.\n输入的字符只能为 小括号 字母 数字 汉字 空格 : / - \n请重新输入.";
                regex = "[-:/() \\w\u4E00-\u9FA5]{1,30}";
                return jTextField2;
            }else {
                message = "输入的E-mail地址错误.\n输入的格式为[email protected] \n请重新输入.";
                regex = "\\w{1,20}@\\w{3,10}\\.\\w{2,8}";
                return jTextField4;
            }
        }
        
        private boolean isValidMatch(String input, String regex){
            Matcher matcher = Pattern.compile(regex).matcher(input);
            return matcher.matches();
        }
      

  3.   

    http://hi.baidu.com/1shome/blog/item/e07c3ff0c4a00bc27931aaa8.html
    这里有例子思路不一样