`
helin
  • 浏览: 151754 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在Swing UI界面定义默认获得焦点的组件

    博客分类:
  • java
阅读更多
最近写了个小的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
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java图形编程:java焦点管理专题.pdf

    Swing的焦点管理器会考虑组件的X轴和Y轴坐标,使得在同一行上的组件按从左到右的顺序获取焦点,不同行之间则是较高行先于较低行。 Java 1.4引入的焦点控制系统包括两个核心抽象类:FocusTraversalPolicy和...

    substance7.2.1.jar

    在Java Swing中,UI组件的外观和行为是由LookAndFeel(看起来和感觉)类来控制的。默认的LookAndFeel通常比较单调,而Substance库提供了超过100种预定义的主题,让开发者能够快速地改变应用的视觉样式。这些主题覆盖...

    dotnet 7 WPF 破坏性改动 按下 F3 让 DataGrid 自动排序.rar

    在.NET Framework及之前的版本中,WPF的DataGrid控件并未对F3键有特定的行为定义。然而,在.NET 7中,开发者可能会发现按下F3键会默认使DataGrid按照当前列进行升序或降序排序。这种变化对于用户来说可能是方便的,...

    j2se一句话学习笔记

    34. **UI的本质**:无论是Swing还是其他UI技术,最终都是在屏幕上绘制图形。 35. **FocusableWindowState**:允许设置窗口为焦点窗口,以便接收键盘输入。 36. **正则表达式**:`s+`匹配一个或多个空格字符。 37....

    JAVA必备英文单词.docx

    61. **Swing/Awt**:Java的图形用户界面库,Swing是轻量级的,Awt是重量级的。 62. **Frame**:窗体,用户界面的基本组件。 63. **Size**:大小,指控件的尺寸。 64. **Title**:标题,窗口或组件的头部文字。 ...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例148 使用事件分配线程更新Swing控件 193 实例149 使用SwingWorker类完成耗时操作 194 第7章 反射与异常处理 195 7.1 反射的基础 196 实例150 实例化Class类的5种方式 196 实例151 获得Class对象表示实体的名称 ...

    Java编程基础(2011-2012学年第一学期)复习提纲.doc

    - **成员变量**: 定义在类中的变量,用于表示对象的状态。 - **成员方法**: 定义在类中的函数,用于表示对象的行为。 - **构造方法**: 一种特殊的方法,用于创建和初始化对象。 - **创建对象及对象的使用**: - 使用...

Global site tag (gtag.js) - Google Analytics