`
- 浏览:
151754 次
- 性别:
- 来自:
北京
-
最近写了个小的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的原因,太方便了.好了,不罗嗦了,相信大家都明白了,如果有和我一样的朋友,希望这篇文章可以节省您的时间去四处搜索资料.
2006-11-19 12:36
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
Swing的焦点管理器会考虑组件的X轴和Y轴坐标,使得在同一行上的组件按从左到右的顺序获取焦点,不同行之间则是较高行先于较低行。 Java 1.4引入的焦点控制系统包括两个核心抽象类:FocusTraversalPolicy和...
在Java Swing中,UI组件的外观和行为是由LookAndFeel(看起来和感觉)类来控制的。默认的LookAndFeel通常比较单调,而Substance库提供了超过100种预定义的主题,让开发者能够快速地改变应用的视觉样式。这些主题覆盖...
在.NET Framework及之前的版本中,WPF的DataGrid控件并未对F3键有特定的行为定义。然而,在.NET 7中,开发者可能会发现按下F3键会默认使DataGrid按照当前列进行升序或降序排序。这种变化对于用户来说可能是方便的,...
34. **UI的本质**:无论是Swing还是其他UI技术,最终都是在屏幕上绘制图形。 35. **FocusableWindowState**:允许设置窗口为焦点窗口,以便接收键盘输入。 36. **正则表达式**:`s+`匹配一个或多个空格字符。 37....
61. **Swing/Awt**:Java的图形用户界面库,Swing是轻量级的,Awt是重量级的。 62. **Frame**:窗体,用户界面的基本组件。 63. **Size**:大小,指控件的尺寸。 64. **Title**:标题,窗口或组件的头部文字。 ...
实例148 使用事件分配线程更新Swing控件 193 实例149 使用SwingWorker类完成耗时操作 194 第7章 反射与异常处理 195 7.1 反射的基础 196 实例150 实例化Class类的5种方式 196 实例151 获得Class对象表示实体的名称 ...
- **成员变量**: 定义在类中的变量,用于表示对象的状态。 - **成员方法**: 定义在类中的函数,用于表示对象的行为。 - **构造方法**: 一种特殊的方法,用于创建和初始化对象。 - **创建对象及对象的使用**: - 使用...