如何使一个对象拥有焦点? 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 getFocus()看下有没有这个方法最好查下API 转下别人的文章,应该有帮助。最近写了个小的UI界面的程序.程序运行后,为方便使用,应该自动把焦点定位在负责主要工作的部件上,但如何实现这个简单的功能,还着实让我这类出学者查了些资料.首先说一下swing中组件默认获得焦点的机制.在swing的窗体中,先被添加进来的组件,如果可以获得焦点,则会优先获得焦点.这是它的默认规则.但我们可以通过组件调用其自身的requestFocus()方法,来强制某组件优先获得焦点.但这里有一个隐含的问题,那就是直接让这个组件在创建后,就调用requestFocus()是没有任何作用的!!!因为swing中,对焦点的设置是在窗体初始化并显示前最后一刻才执行的,你如果在组件中直接调用requestFocus(),虽然代码也执行了,但却是在设置焦点操作之前执行的,那也自然就无效了.而我们知道了这一点,就好说了,把调用requestFoucs()方法的代码加入的合适的地方不就ok了吗?那么哪里是这个地方呢,那就是给窗体JFrame增加WindowListener事件监听器,然后把对组件requestFocus()方法的调用放在windowOpened(java.awt.event.WindowEvent evt)事件中就可以了.也就是说在打开窗体的时候执行我们的焦点定义代码.这个时候正好是swing设置焦点的刹那!我们的代码也如愿发挥了功效.例如我要让我的一个JTextArea theText默认获得焦点,就可以写如下代码片段:addWindowListener(new java.awt.event.WindowAdapter() { public void windowOpened(java.awt.event.WindowEvent evt) { focusEvt(evt); } });//定义窗体打开时的默认获得焦点的组件 private void focusEvt(java.awt.event.WindowEvent evt) { theText.requestFocus(); } 其实上面的操作,如果在netBeans中来完成,就太简单了.只需要选择JFrame窗体组件,在属性面板的事件中,选择添加一个windowOpened事件,把theText.requestFocus();写在事件代码中就ok了,呵呵,这也正是我十分喜欢netbeans的原因,太方便了.好了,不罗嗦了,相信大家都明白了,如果有和我一样的朋友,希望这篇文章可以节省您的时间去四处搜索资料. 飞鸽 关于编码转换,为何无效? eclipse的log问题 谁能帮我写一个简单的JSpinner的例子 httpclient的错误 swing中设置组件背景色的问题。 毕业设计——画图板 两道简单的面试题 有谁能够告诉我,为什么JB9里连接sql server2000时只能连接系统自带的那些库(如pubs) 求教netty怎么实现组播多播示例 时间格式转换 java跟3G关系
看下有没有这个方法
最好查下API
public void windowOpened(java.awt.event.WindowEvent evt) {
focusEvt(evt);
}
});
//定义窗体打开时的默认获得焦点的组件
private void focusEvt(java.awt.event.WindowEvent evt) {
theText.requestFocus();
} 其实上面的操作,如果在netBeans中来完成,就太简单了.只需要选择JFrame窗体组件,在属性面板的事件中,选择添加一个windowOpened事件,把theText.requestFocus();写在事件代码中就ok了,呵呵,这也正是我十分喜欢netbeans的原因,太方便了.好了,不罗嗦了,相信大家都明白了,如果有和我一样的朋友,希望这篇文章可以节省您的时间去四处搜索资料.