首先获得JPanel上的所有控件,遍历他们,判断如果该控件是JTextField而且获得焦点,那么你就找到了

解决方案 »

  1.   

    使用 if((compenment instanceof JTextField) && compenment.hasFocus())判断。好像是这个hasFocus()方法,我忘拉
      

  2.   

    假设你窗体上有一个Button,那么当你触发Button的单击事件,
    开始找寻获取焦点的输入框时,焦点已经在Button上了,所以
    用上述各位的方法检测不到,因为焦点在Button上了。所以以下程序利用JTextField的FocusListener来监听获取焦点事件。
    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.BorderLayout;
    import java.awt.Container;public class FindFocus extends JFrame
    {
    JPanel jp;
    JButton jb;
    JTextField[] jf=new JTextField[5];
    Container cp;
    JTextField jtfocus;

    FindFocus()
    {
    setTitle("Find Focus");
    setBounds(20,20,300,200);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    cp=getContentPane();
    cp.setLayout(new BorderLayout());
    jp=new JPanel();
    jb=new JButton("Find Focus");
    jb.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e)
    {
    if(jtfocus!=null)
    {
    JOptionPane.showMessageDialog(null,jtfocus.getName());
    jb.setFocusable(false);
    jtfocus.setFocusable(true);
    }
    }
    }
    );


    for(int i=0;i<jf.length;i++)
    {
    jf[i]=new JTextField(10);
    jf[i].setName("JTextField"+i);
    jf[i].addFocusListener(new FocusListener()
    {
    public void focusGained(FocusEvent fe1)
    {
    //如果是JTextField实例,则获取
    if(fe1.getSource() instanceof JTextField)
    jtfocus=(JTextField)fe1.getSource();
    }

    public void focusLost(FocusEvent fe2)
    {
    if(!(fe2.getSource() instanceof JTextField))
    jtfocus=null;
    }
    }
    );

    jp.add(jf[i]);
    }

    cp.add(jp,BorderLayout.CENTER);
    cp.add(jb,BorderLayout.SOUTH);
    }



    public static void main(String[] args)
    {
    FindFocus ff=new FindFocus();
    ff.setVisible(true);
    }
    }
      

  3.   

    一个新开的商业源码站点,大家支持一下  
    有ERP源码和文档  
    http://www.czrx.com/get.asp?get=iamcfr