- 浏览: 55510 次
- 性别:
- 来自: 北京
最新评论
-
fjjiaboming:
求指教.求指教.
JAVA InputMethod 输入法实现纪要 -
fjjiaboming:
能不能详细点??????????想写一写输入法...
JAVA InputMethod 输入法实现纪要 -
mayi140611:
高深,学习中,
Java dnd拖拽实现分析纪要
文章列表
单例模式的实现需要考虑的因素有很多。对于常常出现的Double-checked实现单例模式实际上是不安全的实现:
private static Singleton INSTANCE;
public static Singleton getInstance(){
if(INSTANCE==null){
synchronized(Singelton.class){
//Dou ...
JAVA Painting-Swing实现纪要四
前三节大概描述了swing的绘制实现,现在补充一下Swing里十分重要的一个绘制概念:revalidate。
按Swing的想法,将开发java界面的开发人员分为两类:首先是开发独立的组件,这些组件与具体应用无关,Swing自身也提供了一套,开发者也可以开发自己的组件,这些人是组件开发者角色;然后是为某应用程序构建GUI,则是使用那些组件类建立组件实例,并且通过建立容器关系来实现界面需求,这些是GUI开发者角色。从这个清晰的划分出发可以体会Swing面向OO开发的精神。组件开发者开发的每一个组件面向所有应用,是一个高度抽象,打包封装好的类,因此高 ...
JAVA Painting-Swing实现纪要三
前两节实现了Swing的绘制机制,即在整个GUI应用中所有的绘制时机是怎么产生的,时机产生后又怎么样经过swing框架的基础处理最终进入合适组件开展具体paint。那么每个组件在得到绘制时机时,如何进行绘制?这就从计算机显示世界的历史开始说起了。
在很久很久以前老一辈革命家是通过INT10直接向显示区内存书写显示字节数据,显示芯片会将这些数据按频率生成模拟信号提供显示器进行显示。此后发生了很多方面的进化,一方面是语言上有了c,c++,所以我们不再直接int10,而是调用其API函数;另一方面是绘制的各个方面被封装化,不再直接画点像素,而是逐渐抽象 ...
- 2008-12-14 17:57
- 浏览 2262
- 评论(0)
JAVA Painting-Swing实现纪要二
然后继续< JAVA Painting-Swing实现纪要一>by netbaixc。
纪要一已经分析了swing paint机制的一个大概的轮廓。这里将主要分析RepatinManager是如何维护绘制请求,又如何执行绘制的。
Componet类提供了几个重载repaint,
public void repaint();
public void repaint(long tm);
public void repaint(int x, int y, int width, int height);
JComponent类提供了一个重载 ...
首先推荐<Painting in AWT and Swing>by Amy Fowler。
Sun在JDK 1.0最初发布了图形API包,代号AWT (abstract windowing toolkit),里面除对GUI基本支持(如结合各OS的事件分发机制等)外,自有一套重量级开发GUI的思路,并提供了一组常规使用的重 ...
- 2008-11-28 15:38
- 浏览 5081
- 评论(0)
GC,Reference,Finalize,Dispose
Java提供了垃圾对象自动回收(GC)机制,该机制对堆heap里的对象就其被引用情况进行跟踪判断,对合适对象进行自动回收释放内存。按java规范,对象分如下引用情况:
An object is strongly reachable if it can be reache ...
- 2008-11-28 09:52
- 浏览 1884
- 评论(0)
Jre1.7对输入法的支持使得java开发者能够方便地使用JAVA编写输入法,并整合适配了本地输入法,然后提供出一个在所有输入法中切换的菜单界面,并在以后的编辑文本过程中实现了一个高效的事件处理框架,最终实现了方便地利用输入法进行输入的用户体验。
一.编写Java输入法及切换输入法支持。
利用JAVA编写输入法只需实现两个核心接口:InputMethod,InputMethodDescriptor,然后将jar包放在jre/lib/ext下即可被检测到;本地系统输入法虽然可能安装多个(比如流行的谷歌输入法,紫光拼音输入法),但通过InputMethodAdapter只适配为一个输入法;各个j ...
- 2008-11-28 09:46
- 浏览 12657
- 评论(2)
Jre1.7鼠标事件以MouseEvent类封装。共有如下8种:
/**
*The"mouseclicked"event.This<code>MouseEvent</code>
*occurswhenamousebuttonispressedandreleased.
*/
publicstaticfinalintMOUSE_CLICKED = MOUSE_FIRST;
/**
*The"mousepressed"event.This<code>Mous ...
- 2008-11-28 09:45
- 浏览 1982
- 评论(0)
特别注意:按java给出的Focus实现规范,jre1.7保证实现如下几点:
1. Focus_Gained,Focus_Lost事件的序列。即如果在EDT中,应用程序查询currentFocusOwner,=A,此后=B,则中间一定按顺序收到A Lost,B Gain.这主要通过DefaultKeyboardFocusMan ...
- 2008-11-28 09:44
- 浏览 1163
- 评论(0)
1. 在Jre1.7版本中,KeyboardFocusManager,DefaultKeyboardFocusManager这两个类,与Component, WComponentPeer类一起完成了focus的主要逻辑实现。
DefaultKeyboardFocusManager是前者的系统默认实现。其单例注册在appcontext中,如果需要,程序员可以替 ...
- 2008-11-28 09:44
- 浏览 1614
- 评论(0)
窗口系统一般包含一个桌面GUI+若干应用程序GUI。每个GUI都由组件构成,每个组件都可以获得focus,获得focus的组件将获得之后的键盘事件,而任意时刻只有一个组件能获得focus。这个设计适用在当前所有的窗口系统,而跨各种系统 ...
- 2008-11-28 09:43
- 浏览 2720
- 评论(0)
Java dnd拖拽实现分析纪要
既有的Swing组件都内置了拖拽的支持,是怎么样支持呢?
首先,在Windows环境的jvm进程中,一个gui程序将启动两个线程:AWT-WINDOWS(AWT)和Event-Dispatch-Thread(EDT)。AWT-WINDOWS线程不断从windows操作系统中获取GUI事件并进行初步的底层处理;其中一些事件会被包装成高级的AWTEvent置入一个地方,而EDT线程的处理过程就包括不断在的适当时机从这个地方获取这些AWTEvent并进行高级处理。
然后,拖拽的效果就是由以下几个GUI操作事件及相应程序处理完成的。
1. 拖拽开始, ...