如何知道光标所在的JTextField? 首先获得JPanel上的所有控件,遍历他们,判断如果该控件是JTextField而且获得焦点,那么你就找到了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使用 if((compenment instanceof JTextField) && compenment.hasFocus())判断。好像是这个hasFocus()方法,我忘拉 假设你窗体上有一个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); }} 一个新开的商业源码站点,大家支持一下 有ERP源码和文档 http://www.czrx.com/get.asp?get=iamcfr 新手的疑问 除Applet外没有别的可在线编辑工作流的方法了吗?? Applet的问题 事件与线程 生成可执行JAR包的问题? 为什么,构造函数的优先级比较低了?请大家帮忙看看? 初学者的问题:xml的文件数据读取问题。谢谢! socket端口问题,请指教 .class字节码文件是Java独有的吗? ldap出错error code 11 遇到一个奇怪的问题!有人知道为什么吗? ThinkInJava里的一个例程,没看明白,请指点。
开始找寻获取焦点的输入框时,焦点已经在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);
}
}
有ERP源码和文档
http://www.czrx.com/get.asp?get=iamcfr