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

Java Focus实现纪要三

阅读更多
特别注意:按java给出的Focus实现规范,jre1.7保证实现如下几点:

1.       Focus_Gained,Focus_Lost事件的序列。即如果在EDT中,应用程序查询currentFocusOwner,=A,此后=B,则中间一定按顺序收到A Lost,B Gain.这主要通过DefaultKeyboardFocusManager.dispatchEvent时,尤其是处理Gained(PreparedFocusGained)时,如果发现currentFocusOwner!=null,说明尚未得到Lost,则会主动生成一个Lost发布,处理后继续处理Gained。

2.       如果是在同一个重量级组件间做轻量级组件间切换,每一个focus event实例上可以获取到准确的opposite,source.这主要通过DefaultKeyboardFocusManager.dispatchEvent和KeyboardFocusManager.retargetEvent时,主动控制纠正可能的不准确的source,opposite。

3.       Focus Event支持temporary应用,尤其体现在当整个window失去焦点,当再次获取焦点时将恢复此window的最后聚焦组件。应用程序查询focus event.isTemporary==true时,则可以确信该组件按既有逻辑很快将恢复焦点。这主要通过DefaultKeyboardFocusManager.dispatchEvent和KeyboardFocusManager.retargetEvent时,对temporary做了充分的考虑控制。

4.       KeyEvent的处理符合规范流程:

a.       根据request时间戳缓存。

b.       解除缓存时首先KeyboardFocusManager.isProxyActive(KEYEVENT),考虑是否交给本地系统代理处理。

c.       否则KeyboardFocusManager.注册keyEventDispatchers接手处理。

d.       发布该keyevent给对应component进行处理,其中分为如下阶段:

1.       Allow the Toolkit to pass this to AWTEventListeners.注册在toolkit下的AWTEventListeners得到处理。

2.       KeyboardFocusManager.processKeyEvent用来处理焦点遍历(TAB等)。

3.       Pre-process any special events before delivery。对KEY_PRESSED,KEY_RELEASED,组件的容器有机会preProcessKeyEvent。

4.       组件的对应Key(Press,Typed,~~)Listener进行处理。

e.       KeyboardFocusManager.注册keyEventPostProcessors接手处理。

f.        组件peer得到机会处理。

在其上1,2,3点的实现中,Jre1.7版本充分考虑了跨平台性:比如Windows系统,如果仅仅是拖动滚动条是不会发出FocusEvent,而其他系统就会发出temporary的FocusEvent;有些系统在重量级对等体间切换可以提供准确的opposite,但是有些系统则不提供。而jre1.7在实现上融合了各个系统的情况,给出了全面判断并针对性地处理,保证了跨平台的Focus规范表现。

分享到:
评论

相关推荐

    javajsp实现了js验证表单

    ### Java JSP 实现 JS 表单验证 在本文中,我们将探讨如何使用 JavaScript 在 Java JSP 页面上实现表单验证。此示例代码通过多种正则表达式和条件判断来确保用户输入的数据符合特定的标准。 #### 标题解读:Java ...

    Cobol移植至Java解决方案

    例如,Visual Studio 2010可以用于C#,但对Cobol的支持可能有限,可能需要结合其他工具如Micro Focus的Visual COBOL来实现Cobol和Java的开发。 3. **语法和数据类型**: - **COBOLCOBOL85COBOL**: 这可能是在讨论...

    Java JsonPath实现.zip

    Java JsonPath实现是一种在Java程序中解析JSON对象的工具,类似于XPath在XML处理中的作用。JsonPath是由Goessner在2007年提出的概念,它提供了一种简洁的表达式语言,用于从JSON文档中提取数据。在Java中,我们可以...

    focus-java8:java 8的一些例子

    Java 8是Java语言的一个重要版本,它引入了一系列创新特性,极大地提升了开发效率和代码的可读性。本文将深入探讨Java 8的几个关键特性,包括拉姆达表达式、流(Stream)以及默认方法。 1. **拉姆达表达式** (Lambda ...

    基于JAVA的学生成绩管理系统的设计与实现.doc

    基于JAVA的学生成绩管理系统的设计与实现 摘 要:本文按照目前流行的B/S体系结构模式,结合现有的学生成绩管理系统的现状,采用 SQL Server 2000数据库和JAVA技术,设计开发了学生成绩管理系统系统,本系统分为前台...

    focus.swf幻灯片插件

    《聚焦幻灯片插件——focus.swf的详解与应用》 在网页设计中,吸引用户的注意力至关重要,而幻灯片展示就是一种有效的手段。本文将深入探讨一款名为"focus.swf"的幻灯片插件,它以其酷炫的播放效果和灵活的配置选项...

    EASE_Focus_v3.0.18.zip

    安装EASE Focus v3.0.18的过程相对简单,压缩包中的"setup.exe"和"EASE Focus 3.msi"是主要的安装文件。"Setup.bmp"可能是安装向导的启动图像,"ISSetup.dll"则是安装过程中的动态链接库文件。"0x0409.ini"和"Setup....

    vue3 获取焦点,vu3 input 获取焦点 Vue 3 focus input

    我们都知道在vue2中获取焦点为,然后调用focus方法 this.$nextTick(()=>{ this.$refs.XXX.focus() }) 现在我们的vue3怎么获取焦点,请看附件,已经正常使用。 请放心下载

    Focus Mp3 Recorder Pro v3.4

    3. 强大的编辑工具:除了录音,Focus Mp3 Recorder Pro v3.4还提供了丰富的音频编辑功能,如剪切、复制、粘贴、合并音频片段,以及调整音量、添加淡入淡出效果等,让后期处理更加便捷。 4. 音频转换:用户可以将...

    Faro Focus3D三维激光操作流程

    ### Faro Focus3D 三维激光扫描仪操作流程详解 #### 一、概述 随着测绘技术的不断发展,高效且简便的技术不断涌现。Faro Focus3D 三维激光扫描仪作为目前世界上最轻巧、体积最小的专业级扫描设备之一,具有突出的...

    java jsp+servlet实现登录网页设计

    ### Java JSP+Servlet 实现登录网页设计 #### 项目背景 本项目旨在通过Java、JSP和Servlet技术实现一个简单的用户登录系统。系统的核心功能包括用户登录验证、数据库连接及数据操作等。 #### 技术栈 - **前端**: ...

    focus.swf图片切换

    3. **focus.swf实现方式** focus.swf通过ActionScript编程语言实现。ActionScript是Flash平台的主要脚本语言,用于控制动画、交互和逻辑。在focus.swf中,可能包含以下关键部分: - 图片数组:存储待切换的所有...

    Focus on 3D terrain

    首先,3DTerrain这一标签暗示了书中的核心内容——3D地形建模。这通常涉及到几种关键技术:高度图、分形算法、LOD(Level of Detail)技术和纹理映射。高度图用于表示地形的高度信息,可以是2D图像,通过颜色深浅...

    Focus On 3D Models Source Code

    在"Focus On 3D Models"的源代码中,我们可以看到这些过程的具体实现。建模部分可能包括使用多边形、NURBS(非均匀有理B样条)或细分表面等技术创建几何形状。源代码可能会包含对顶点、边和面的操作,以及复杂的拓扑...

    JAVA与COBOL相互调用.doc

    #### 三、COBOL调用JAVA 1. **环境变量COBJVM**:当COBOL程序需要调用JAVA时,必须设置环境变量COBJVM以指定使用的JAVA运行时系统。 2. **JAVA运行时库位置**:通过修改PATH环境变量来确保JAVA虚拟机(jvm.dll)文件...

    Java中带复选框的树(Java CheckBox Tree)的实现和应用.doc

    总结来说,Java 中实现带复选框的树(CheckBox Tree)需要自定义 TreeNode 类(CheckBoxTreeNode),用于存储结点是否被选中的状态,并实现选中/取消选中时子结点和父结点的状态更新。同时,还需要创建一个 ...

    [Jax-RS] RESTful Java 开发 (Jax-RS 实现) (英文版)

    [奥莱理] RESTful Java 开发 (Jax-RS 实现) (英文版) [奥莱理] RESTful Java with Jax-RS (E-Book) ☆ 图书概要:☆ Learn how to design and develop distributed web services in Java using RESTful ...

    用Java设计文本编辑器MiniEditor

    《用Java设计文本编辑器MiniEditor》是一款基于Java编程技术实现的轻量级文本编辑工具。这个项目旨在提供一个基础的文本编辑环境,允许用户进行基本的文字操作,如输入、复制、删除、选中、插入,以及查找和替换功能...

    HTC Vive Focus PlusVR一体机开发工具SDK

    3. `wvr_unity_Vive3DSP.unitypackage`:此包专注于音频处理,特别是Vive 3D音效的实现。它提供了高级的音频渲染技术,能够增强VR环境中的声音定位感,提升用户体验的真实感。 此外,SDK还附带了开发文档链接,这是...

    Focus On 3D models

    对于支持动画的模型格式(如md2和md3),还需要实现动画播放功能。这通常涉及到以下步骤: - 解析关键帧数据。 - 计算每帧的动画状态。 - 更新模型的顶点位置。 - 每帧渲染更新后的模型。 #### 总结 通过C++和...

Global site tag (gtag.js) - Google Analytics