在一个JTextField里面,我写了事件,如果里面输入的Value不符合条件,则光标一直在这个JTextField里面,
不能移动到别的JTextField里面,如何让焦点一直在JtextField?谢谢!

解决方案 »

  1.   

    requestFocus()应该是有用的 J2SE里
    import java.awt.FlowLayout;
    import javax.swing.JFrame;
    import javax.swing.JTextField;public class Test { public static void main(String args[]) {
    JFrame jf = new JFrame();
    JTextField jtf1 = new JTextField();
    JTextField jtf2 = new JTextField();
    jtf1.setColumns(10);
    jtf2.setColumns(10);
    jf.add(jtf1);
    jf.add(jtf2);
    jf.setLayout(new FlowLayout());
    jf.setSize(400, 150);
    jf.setVisible(true);
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    while (true) {
    jtf1.requestFocus();
    }
    }}
      

  2.   

    参照以下代码写:
    JTextField tf_panme=new JTextField();
    tf_pname.setInputVerifier(new InputVerifier() { @Override
    public boolean verify(JComponent input) {
    try {
    JTextField tf = (JTextField) input;
    if (tf.getText().equalsIgnoreCase("")) {
    setStatus("姓名不能为空!");
    return false;
    }
    } catch (NumberFormatException e) {
    setStatus("格式不正确,应为整数!");
    return false;
    }
    return true;
    }
    });
      

  3.   

    不好意思,我的是一个JTable,Jtable里面用JTextField,
    按照上面各位的方法还是不行,是不是需要验证Jtable一个单元格
    里面的的值,如果不符合,就不让光标移出这格单元格?
    private JTextField editor;
    private TableColumn tc;主要代码:        model = new DefaultTableModel(data, Header) {
                        public boolean isCellEditable(int rowindex, 
                                                      int columnindex) {
                            String strtmp = (String)table.getValueAt(rowindex,1);
                            int row = rowindex;
                            if (strtmp.equals("C")){
                                if ((rowindex==row)&&(columnindex>2)){
                                    return false;
                                }
                            }
                            return true;
                        }
                    };
            //JTable table = new JTable(model);
            table = new JTable(model);
            JScrollPane jsp = new JScrollPane(table);        colmodel = table.getColumnModel();
            //=========Set the table Cell Width ================
            colmodel.getColumn(0).setPreferredWidth(100);
            colmodel.getColumn(1).setPreferredWidth(10);
            colmodel.getColumn(2).setPreferredWidth(100);
            colmodel.getColumn(3).setPreferredWidth(100);
            //=========set the Cell for Textfield ================
            for (int index = 2; index < 6; index++) {
                tc = colmodel.getColumn(index);
                editor = new JTextField();
                MyCellEditor celleditor = new MyCellEditor(editor);
                celleditor.setClickCountToStart(0);
                tc.setCellEditor(celleditor);
            }
    //======这一部分生成JTextField的约束
        class MyCellEditor extends DefaultCellEditor {
            public MyCellEditor(JTextField textField) {
                super(textField);
                // TODO Auto-generated constructor stub 
            }        public boolean stopCellEditing() {
                //return true;
                int row = table.getSelectedRow();
                int col = table.getSelectedColumn();
                if ((row==0)&&(col==2)){
                  String value = (String)this.getCellEditorValue();
                       editor.setInputVerifier(new InputVerifier() {
                                //@Override 
                                public boolean verify(JComponent input) {
                                    try {
                                        JTextField tf = (JTextField)input;
                                        if (tf.getText().equalsIgnoreCase("")) {
                                            //setStatus("wqeq");
                                             JOptionPane.showMessageDialog(null,"Error Format.");
                                            return false;
                                        }
                                    } catch (NumberFormatException e) {
                                        //setStatus("qweq!");
                                         JOptionPane.showMessageDialog(null,"Error Format.");
                                        return false;
                                    }
                                    return true;
                                }
                            });
                  JOptionPane.showMessageDialog(null,"Error Format.");
                }
                return super.stopCellEditing();
            }
        }还是不行,大家帮忙呀
      

  4.   

    [code]
    textField.setInputVerifier(new InputVerifier(){
        public boolean verify(JComponent component){
             JTextField field=(JTextField)component;
             return isValid(field.getText());
        }
    });
    [/code]试试这样,isValid是你的判断输入合法性的函数
      

  5.   

    靠,怎么代码没发上。textField.setInputVerifier(new InputVerifier(){
        public boolean verify(JComponent component){
             JTextField field=(JTextField)component;
             return isValid(field.getText());
        }
    });
    试试这样,isValid是你的判断输入合法性的函数