??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产日韩成人综合天堂,亚洲精品无码永久在线观看,亚洲人成网站18禁止http://www.tkk7.com/hhh1983/zh-cnSat, 10 May 2025 19:10:56 GMTSat, 10 May 2025 19:10:56 GMT60- SWT如何获得本地文gpȝ的图标等表示信息http://www.tkk7.com/hhh1983/archive/2006/10/30/78074.htmlhhhhhhMon, 30 Oct 2006 08:20:00 GMThttp://www.tkk7.com/hhh1983/archive/2006/10/30/78074.htmlhttp://www.tkk7.com/hhh1983/comments/78074.htmlhttp://www.tkk7.com/hhh1983/archive/2006/10/30/78074.html#Feedback2http://www.tkk7.com/hhh1983/comments/commentRss/78074.htmlhttp://www.tkk7.com/hhh1983/services/trackbacks/78074.html
FileSystemView.getFileSystemView().getSystemDisplayName(file)Q?
FileSystemView.getFileSystemView().getSystemIcon(file)Q?
可以采用上面的方法得到?
那SWT中如何做到呢Q?

]]> - swing灉|和重用的艺术 renderer/editorhttp://www.tkk7.com/hhh1983/archive/2006/10/28/77814.htmlhhhhhhSat, 28 Oct 2006 08:44:00 GMThttp://www.tkk7.com/hhh1983/archive/2006/10/28/77814.htmlhttp://www.tkk7.com/hhh1983/comments/77814.htmlhttp://www.tkk7.com/hhh1983/archive/2006/10/28/77814.html#Feedback0http://www.tkk7.com/hhh1983/comments/commentRss/77814.htmlhttp://www.tkk7.com/hhh1983/services/trackbacks/77814.html 但是我们来看即便有了Composite模式Q但Composite模式通常是构建静态组合,如果要动态的替换一个复合组件内部的子元素如何办呢?如此一来这个组件就只能定义自己的布局形式Q而不能定dq个布局形式内的元素?
其实从用戯度来说一个GUI元素通常是两种情况要么是表现Q要么就是处于和用户交互状态,q是它们的Ş态通常不一栗所以组件不仅仅要只定义自己的布局形式Q还要给于外部机会来配置当自q子元素处于这两种状态时相应的UIlg是什么!
swing通过renderer/editor辑ֈ了这U灵zL。如swing中JTable,JList,JTree{组仉只是定义了自
q布局形式。ƈ且都可以配置renderer/editorQ这样你的renderer/editor实现接了lg里面元素的表现Ş式和交互形态?
理论上你可以用Q何JComponent作ؓlg里面元素的表现Ş式和交互形态。其灉|性和重用性达C一个巅峎ͼ
以前q聊q一个JTable的例子!
http://www.douban.com/group/topic/1112689/
]]> - 初探eclipse RCP 有些问题Q?/title>http://www.tkk7.com/hhh1983/archive/2006/10/27/77695.htmlhhhhhhFri, 27 Oct 2006 09:16:00 GMThttp://www.tkk7.com/hhh1983/archive/2006/10/27/77695.htmlhttp://www.tkk7.com/hhh1983/comments/77695.htmlhttp://www.tkk7.com/hhh1983/archive/2006/10/27/77695.html#Feedback2http://www.tkk7.com/hhh1983/comments/commentRss/77695.htmlhttp://www.tkk7.com/hhh1983/services/trackbacks/77695.html
public void createInitialLayout(IPageLayout layout) {
String er = layout.getEditorArea();
layout.setEditorAreaVisible(false);
layout.addView(FileTransfersView.DownloadID,IPageLayout.TOP , 0.25f, er);
layout.addView(FileTransfersView.UploadID,IPageLayout.BOTTOM , 0.25f, er);
}
}
比如有以上代码,那么我如何获得被加到layout的viewer实例呢?我发现本更无法获得viewer实例的引用了?
plugin.xml文g的片?
<extension
point="org.eclipse.ui.views">
<view
class="com.mt.ui.FileTransfersView"
id="com.mt.ui.FileTransfersView.Upload"
name="test1"/>
<view
class="com.mt.ui.FileTransfersView"
id="com.mt.ui.FileTransfersView.Download"
name="test2"/>
</extension>
很明显两个view的class是一个,因ؓ我要重用q个view,它们只是有些属性和背后的数据不一P我需要在初始化时这些不一栯定?br />
如果我的Z只有在这?
public void createPartControl(Composite parent) {
}
那么N不同的Viewp都通过l承Q然后重写上面这个方法来做,q样的话是不是过于呆板了Q?
q请熟悉eclipse RCP的指炏V?br />
]]> - 看JFace与Swing MVC的Mhttp://www.tkk7.com/hhh1983/archive/2006/10/26/77451.htmlhhhhhhThu, 26 Oct 2006 10:45:00 GMThttp://www.tkk7.com/hhh1983/archive/2006/10/26/77451.htmlhttp://www.tkk7.com/hhh1983/comments/77451.htmlhttp://www.tkk7.com/hhh1983/archive/2006/10/26/77451.html#Feedback2http://www.tkk7.com/hhh1983/comments/commentRss/77451.htmlhttp://www.tkk7.com/hhh1983/services/trackbacks/77451.html
在JFace的ContentViewer抽象中下面的三个Ҏ反映它对待模型的思\Q?
public void setContentProvider(IContentProvidercontentProvider)
public void setInput(Object input)
public void setLabelProvider(IBaseLabelProvider labelProvider)
昄setInput是用来配|view背后的数据,从它的参数类型(ObjectQ来讲应该是你的与view无关的领域模型.
从这里就可以看出它和swing的根本差异.swing各种不同viewer(在swing的世界叫JComponent)背后的模型是因不同组件而不同的Q模型的接口是反应了该组件特征的Q?
如 JTable 背后的TableModel,TableModel接口的定义基本表达了作ؓ一个二l表格期望获得数据的方式如TableModel中有定义q样的方法:
Objetc getValueAt(int row,int column)
在JFace中直接可以放入Objectcd数据Q但各种viewer不一样对于拿数据的期望也不一P
ContentProviderQLabelProvider解决了上q问题,不同ContentProvider定义了该viewer所期望的拿数据的接口,其实我觉得swing中的model在意义上cM于ContentProviderQ?
其实感觉JFace的做法在量强制你必L建独立于GUI的模型.
而swing的话q没有这UR入性,你可以直接实现viewer的模型接口如
class Mymodel implenents TableModel?
?
也可以定义比较独立的模型然后用对象适配器模式将它们适配到viewer model上!
http://www.douban.com/group/topic/1159250/
]]> - 我很希望B/S快点退出历史舞収ͼhttp://www.tkk7.com/hhh1983/archive/2006/10/17/75710.htmlhhhhhhTue, 17 Oct 2006 09:51:00 GMThttp://www.tkk7.com/hhh1983/archive/2006/10/17/75710.htmlhttp://www.tkk7.com/hhh1983/comments/75710.htmlhttp://www.tkk7.com/hhh1983/archive/2006/10/17/75710.html#Feedback25http://www.tkk7.com/hhh1983/comments/commentRss/75710.htmlhttp://www.tkk7.com/hhh1983/services/trackbacks/75710.html 一个client and server多对多的互联|环境。ƈ且client的部|和B/S一h便,甚至你可以没有client的概念,而只有获得服务的概念?
攄q去Q?net战略最为接q?br />
我不明白Z么很多认为基于浏览器{的所谓Web OS会大攑օ彩?
昄由OS延来构造一个互联网应用q_合理的多?
传统we作ؓq行q_有先天的不Q?br />
׃传统web说vQ一个html览器(clientQ?lt;---->html提供?web服务?。也是它也只是传统C/S架构一
U,只是它基于标准而带来了普及性,使得html览器(clientQ逐步演变Z个基设施Q^収ͼ。很多应用在往q个架构上移Q于是基于这个架构的
被称为B/S的架构出C。然而很遗憾Q它原先q不是作Z联网应用q_角度而设计的Q于是就有了以下的感慨:
U观web的历E,是在一个不适合交互的基架构上搭Z互?
扭曲的发展!
强扭的瓜的感觉?
所以我们要的是一个更为通用的互联网应用q_Q它应该吸取B/S的URL的想法,但是他指向的是实际的E序Qƈ被下载到本地q行。但q个q程某种E度上被透明Q所以对用户来说他完全可以没有client的概念!当然他首先应该有q样一个互联网应用q_?
其实q就是让用户直接可以面向服务Q面向服务是个好概念Q所以它q不局限于Z机器之间。Y件不同的lg之间或不同应用之_可分布在不同物理讑֤上)可以面向服务的概念集成在一?-----即SOA.其中已多对多Q松耦合为特炏V?br />
实际上通过一个执行环境(q行Ӟȝ一所有的计算讑֤已经被认为是不可行的Q曾l的很多分布式架构以及java都试图这样做Qjava希望世界所有的计算讑֤上都q行着java,q通过java来交。很遗憾Qjava没有做到?
所以SOA来了Q就目前来说 web 服务 被认为是实现SOA的良好架构,?web
服务的核心是什么,不管怎么说我觉得XML必是其一Q而XML又是Z公共标准的。这里的关键Z实现应用之间的互联互通,我们无需要两个应用都构架于同
一个执行环境(q行ӞQ因为我们仅我们将要在U上交换的信息达成一致?
q就带来了松耦合Q及强大的灵zL。在SOA下信息孤岛确实可以被很好的解冟?
所以有SOA之于企业应用Q就如同TCP/IP之于互联|?
其实html有今天的普及Q也是因为它是一个基于文本的公共标准的消息格式不依赖于执行环境,但是它的设计目标性太Zh通用性的要求。因为它一开始就是ؓ一个具体的应用架构而设计的。然而后面对于它的要求不断拓宽,甚至希望它能?
成一个运行^C是xxxscript开始了Q但是这时实际上已经存在了执行环境的依赖了,因ؓ不同xxxscript有不同的执行环境
所以这时就有这个网|么在这个浏览器上不能打开的这L说法了。而反q来虽然有了xxxscript但是q是受到B/S架构的很?
限制QB/S的页面模型)。所以与其不伦不c还不如与人打交道的最l客L直接|n于本地的执行环境中,q且q个执行环境要具备“得client的部
|和 B/S一h便,甚至你可以没有client的概念,而只有获得服务的概念。?
如果对这个执行环境美其名C下:那么叫它RIAq_吧!
昄q个东西没有一个公q标准Q所以几路h马现在是各自而战Q来打造这一q_Qƈ且进行部|Ӏ?
如Flex那一路,在部|的时候搞的是Q悄悄的q行Q打抢的不要。因为是目前L览器都装有flash playerQ等于无形中它的RIAq_已经部v好了?
而MS昄是大张旗鼓:我是老大我怕谁。一句话Q因为对MS来说vista是RIAq_。当然细分一下应该是其上?netq_来支撑RIA。因为MS原有在桌面OS的垄断地位,使得它将.net融于vista以大兵团作战Q成败在此一举!
不管怎么_vista比v其他几\人马Q确实是最完整Q最强大的RIAq_?br />
b/s增强前台交互能力的方向意味着什么,意味着在要有更强的描述行ؓ逻辑的语aQ程序设计语aQ写的东西在本地执行Q那么这些描q行为逻辑的语a是不是有好多Q。。。。。???!!!!
其二,有很多应用仅凭Http(h---响应)q种交互方式不够,比如有些是要h----回调,q有一些是观察者模型的交互{?
{?比如报hpȝ是属于q种观察者模型的,客户端发送某个报价信息的h,那么以后q个报h一有变化服务器端就要立刻通知客户?q里TGPq接要一?
保持着).
其三,是UI,采用HTML描述的UIq于不,很多应用需要构Z富的UI.
如果B/S架构做到了以上说?那么q是B???q_无关性又如何保证???
其实对于q个问题应该q么? b/s向基q_发展是一个扭曲的发展,
因ؓ它是一个应用架?
而由OS延则更为合?
当然如果某个应用W合B/S架构,那么b/s当然是不错的选择.只是它向基础q_发展是一个扭曲的发展.(再次!)
或者这个话题可以这么说:
希望b/s向基q_发展可以快点l束?
我们来看一个问题?
定义一个描qC?内容)的语a的标准(HTMLQXML...Q,和定义一个一l的E序语言Qjava ,c,c++,c#,.................Q的标准哪一个容易?
事实告述我们应该是前者。也是说Application背后的运行环境注定是多样性的?
那么webZ么能跨^台呢Q因为它们共享的是前者,一个HTML标准QHTML不是Application。然而扭曲就从这里开始,HTML不断扩展在向Application演进Q随之跨q_Ҏ不断削弱?
那么q样一个演化说明了什么呢Q说明我们需要ApplicationQ且它要像web一h部v。我们可以称使得q样的Application得以q行的^Cؓ互联|应用^台?
但Applicationl究有很多不同的q_Q互联网应用q_也不例外。但我们xweb演化的最后是不是q是NApplicationq_的多h呢Q(而且它走的\扭曲的多Q?
所以问题关键回C谁将最有可能成Z联网应用q_的老大Q目前来看实力最是vista.
其实个h感觉vista一大命就是要传lOS延成一个互联网应用q_Q很多hg忽略了MS的这个野心?
Tim Berners-Lee的说Web是一?信息I间"。很_辟Q?
但我们更需要互联网是一?服务I间",技术一点的话叫"ApplicationI间",只是q些Application要以服务的方式提供出?所以h性化的讲法叫"服务I间".
当然提供信息也是服务,所以前者是后者的一个子?

]]> - 关于java字符输出到界面时的问?/title>http://www.tkk7.com/hhh1983/archive/2006/10/17/75706.htmlhhhhhhTue, 17 Oct 2006 09:46:00 GMThttp://www.tkk7.com/hhh1983/archive/2006/10/17/75706.htmlhttp://www.tkk7.com/hhh1983/comments/75706.htmlhttp://www.tkk7.com/hhh1983/archive/2006/10/17/75706.html#Feedback1http://www.tkk7.com/hhh1983/comments/commentRss/75706.htmlhttp://www.tkk7.com/hhh1983/services/trackbacks/75706.html 比如 String test = "test ~码";
那么"test ~码"是采用unicode~码后的二进制Ş式保存?
然而如果要把test输出到系l边界以外的地方Q那么都可能要涉及到~码转换问题Q无论是文gq是|络的另一端?
不过没关p,java提供了强大的I/O库,有Reader ?Writer两个适配器体p,我们可以test以我们想要的~码Ҏ输出?
但是如果test的东西输出到界面时到有些问题了,本来从概念上界面也是pȝ的边界,所以unix有一切皆文g的抽象,当然如果界面是交?
性GUI时这个抽象显然是不够的,q就不论了。关键是GUIpȝq没有提供类似javaI/O的这U能力,java也没有直接以unicode形式输出l?
GUIpȝQ而是好像会把内存中变量字W再通过pȝ默认语言Q字W集Q编码去转换Q然后扔l绘囄l吧Q?
q样的话如果 JLable label = new JLabel(test);
那么q个label的显C在体中文版的OS上没问题Q但如果在繁体中文版的OS可能有问题了?
按理说swing是独立于本地OS的GUIpȝQ但是他q是建立在java2D上,而java2Dq是要利用本地的l图pȝQ像渲染文字q种l图是不是java2Dq是利用了本地绘囄l呢Q?br />
java GUI “??“口?q两个我都碰到过?
如果某中~码Ҏ里没有这个文字,java会用" ?"q个代替?
如果某种文字没有相应的字体,java会用"?代替?
java在输出到pȝ界面时会把内存中变量字符再通过pȝ默认语言Q字W集Q编码去转换Q?
我觉得如果java自己实现所有unicode支持的文字的l图Q基于更低的图形APIQ,那么他没有必要{Q因为unicode字符ljava囑ŞpȝQ他都能把它表现出来Q当然java囑ŞpȝZOS的更低的图形API?
是不是java自己实现所有unicode支持的文字的l图q项d比比较困难?
如果java能做到这L的很强大啊!
q样的话JLable label = new JLabel(test); 无论在什么语a版的OS 都OK?

]]> - Swing 的MVChttp://www.tkk7.com/hhh1983/archive/2006/10/17/75704.htmlhhhhhhTue, 17 Oct 2006 09:42:00 GMThttp://www.tkk7.com/hhh1983/archive/2006/10/17/75704.htmlhttp://www.tkk7.com/hhh1983/comments/75704.htmlhttp://www.tkk7.com/hhh1983/archive/2006/10/17/75704.html#Feedback1http://www.tkk7.com/hhh1983/comments/commentRss/75704.htmlhttp://www.tkk7.com/hhh1983/services/trackbacks/75704.html swing对于MVC的实现用一句话来说是Q一个GUIlg对应着一个MVC体系?
在这个体pd中JComponentq样的组件就扮演者MVC中的C,那拿JTable来说,MVC 是 TableModel JTable TableUI.
q种MVC几乎实施到每一个GUI元素的设计相当的灉|.对于swing 的MVCq有一个重要的特点是它对于model
作了q一步的区分,那就是真正表辄序数据的model,和仅仅表辄面状态的model.q拿JTable 来说是: TableModel ?
TableColumnModel.
在很多地方看到都说swing的这UMVC的划分多被科学家ƣ赏,q我׃能苟同了,我是普通h,不过我也很欣?swing高雅而又不失实用.
当然也有Z说尽swing的MVC很精?不过通常我们E序中model都不是仅仅对应在一个GUI元素?甚至不能定要对应在哪些GUI元素?
定义q样的类通常仍然很死:
class MyModel implements TableModel,ListModel{
}
我觉得对于swing的设计没有什么错,它ؓ每一个组件期待的model定义了相应的接口.但是我们E序当中的model又希望更独立于GUI.
Z辑ֈ两全其美,到可以用Eclipse里面的IAdaptable
机制.让你的modelh IAdaptable能力,q样你就可以它随便适配到哪个swing model ?如此的组合真是从头到脚的灉|?
q有swing的这UMVC设计也促成了swing的可插拔外观Ҏ?
]]> - Swing是MVC设计的典范(转蝲Q?/title>http://www.tkk7.com/hhh1983/archive/2006/10/17/75699.htmlhhhhhhTue, 17 Oct 2006 09:27:00 GMThttp://www.tkk7.com/hhh1983/archive/2006/10/17/75699.htmlhttp://www.tkk7.com/hhh1983/comments/75699.htmlhttp://www.tkk7.com/hhh1983/archive/2006/10/17/75699.html#Feedback3http://www.tkk7.com/hhh1983/comments/commentRss/75699.htmlhttp://www.tkk7.com/hhh1983/services/trackbacks/75699.html
Swing的设计是MVC的典范。虽然MVC的概忉|Ҏ滥,可是真正能够理解q熟l掌握、在设计和开发里面自然流露的q不多见。记得用VC
Q+开发程序时候,MFC向导也是生成Document和View两个c,当时一直奇怪ؓ什么这么绕圈子。再看Swing的设计,则到处充满了MVC的痕
qV仔l研ISwing中事件监听、Model-View分离、Renderer/Editor机制、可插拔的LookAndFeel{机Ӟ直就是一
门艺术,充满了美感。而如果你非常痛恨q些设计q觉得他们怪异Q很可能你是刚从VB或者Delphi转过来,q些快速开发工具帮助了你也“害”了你?
Swing设计的不错,不过可能q度学术化的设计也得Swing跑v来ƈ不灵巧,学习隑ֺ也大。这客观上确实得Swing一直没有被q泛
使用Q而且q受诟病。记得以前“Swing有什么成功的应用吗?”之cȝ帖子一直是热门话题。IBM{则机抓住辫子弄了SWT吸引了不hQ?
Java GUI技术面临分裂的危险?
不过随着JAVA的不断升U和优化QSwing的速度一直在提高Q美观性也在改善,ZSwing的成功应用也来多了。关于Swing是否消亡或被SWT代替或是否能作桌面应用的争论逐渐了。不q喜Ƣƈ_NSwing技术的开发者,其在国内,依旧非常?
好在情况在{好。Sun正意识到Eclipse和SWT所带来的威胁,下了大力气发展NetBeansQ其最新版本对Swing
GUI可视化设计的支持已经过了所有对手,其Rich
Client框架也走向成熟,q对Swing的发展和应用是一个很大的推动。随着WEB热潮的减退Qh们又更多的开始理性的思考B/S和C/S架构的?
择,某些领域Swing技术已l成为首选的解决Ҏ?
随着JGoodies、JIDE、TWaver{优USwing产品的不断涌玎ͼSwing会以更快速度在桌面应用中普及?
转蝲?a target="_blank">http://blog.csdn.net/solo/archive/2006/05/12/725635.aspx
]]> - 关于领域视图 和界面体p视?/title>http://www.tkk7.com/hhh1983/archive/2006/10/17/75695.htmlhhhhhhTue, 17 Oct 2006 09:20:00 GMThttp://www.tkk7.com/hhh1983/archive/2006/10/17/75695.htmlhttp://www.tkk7.com/hhh1983/comments/75695.htmlhttp://www.tkk7.com/hhh1983/archive/2006/10/17/75695.html#Feedback1http://www.tkk7.com/hhh1983/comments/commentRss/75695.htmlhttp://www.tkk7.com/hhh1983/services/trackbacks/75695.html
界面体系视图是指Q是指某U组l这些领域视囄UIҎ。如MDIQ多内部H口Q如以前的word{,q有像现在eclipse的面板分割方案,docking{等?
那么两者做严格的区分有什么好处呢Q?
很显然可以获得领域视囄独立性,以达到适应多种界面体系的灵zL,甚至在运行时q行界面体系的切换?
在swing中有时候我们常常有q样的写法;
MyInternalFrame extends JInternalFrame{
}
其实q种写法是比较死的,因ؓ像JInternalFrameq种view是属于界面体p视图范畴的东西?
如果我们的界面体pM采用InternalFrame风格Ӟ改动量是很大的?
其实如果q样是不是更好呢Q?
interface DomainObject{
JComponent getDomainView();
}
不同的界面体pL块拿到DomainView时以自己的方式对DomainViewq行包装。比如是内部桌面的话将DomainView塞到JInternalFrame里,以JInternalFrame包装之?

]]> - JTable 的编辑和表现http://www.tkk7.com/hhh1983/archive/2006/10/17/75693.htmlhhhhhhTue, 17 Oct 2006 09:15:00 GMThttp://www.tkk7.com/hhh1983/archive/2006/10/17/75693.htmlhttp://www.tkk7.com/hhh1983/comments/75693.htmlhttp://www.tkk7.com/hhh1983/archive/2006/10/17/75693.html#Feedback2http://www.tkk7.com/hhh1983/comments/commentRss/75693.htmlhttp://www.tkk7.com/hhh1983/services/trackbacks/75693.html 也就是说JTable的类型定义决定了它是一个规则的二维单元表,但是对于二维单元表内单元格的昄和编辑组件的选择又是极其灉|的.
有如下两个接口:
TableCellEditor
Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column)Q?
TableCellRenderer
Component getTableCellRendererComponent(JTable table, Object
value, boolean isSelected, boolean hasFocus, int row, int column)
所有实现这两个接口的对象都可以配置到JTable.JTable自n定义了单元格的状态:表现或编辑.
当JTabel处于表现状态时它会调用
ableCellRenderer的Component getTableCellRendererComponent(JTable
table, Object value, boolean isSelected, boolean hasFocus, int row, int
column)h表现lgQ?
当JTabel处于~辑状态时它会调用TableCellEditor的Component
getTableCellEditorComponent(JTable table, Object value, boolean
isSelected, int row, int column)Q请求编辑组Ӟ
q样我们实现TableCellEditorQTableCellRendererq两个接口就可以灉|的控制表格单元格的编辑和昄Q?
当然Z方便swing已经定义了这两个接口的默认实玎ͼ如DefaultCellEditorQDefaultTableCellRendererQ?br />
虽然我们有了灉|控制~辑和表现的接口Q但是如何控制编辑和表现状态的转换呢!
首先单元格可不可以编辑由表格的模型控制。因为通常可不可以~辑取决于数据内容,所以将它定义在模型中是合理的!
TableModel 接口有如下一个方法:
boolean isCellEditable(int rowIndex, int columnIndex) Q?
JTabel会通过他来定可不可以~辑?
在可~辑的情况下Q通过JTabel?boolean editCellAt(int row, int column) Q可以启动单元格q入~辑状态。那么如何控制从~辑状态退出呢Q?
q个E微复杂一点,因ؓ从编辑状态退很可能意味着要将~辑器的内容攑օ表格模型?
q里有一个接?
public interface CellEditor{
void addCellEditorListener(CellEditorListener l)
Object getCellEditorValue()
void removeCellEditorListener(CellEditorListener l)
void cancelCellEditing()
boolean stopCellEditing()
.................
}
TableCellEditorl承自它Q也是说swing对单元格~辑器作了更抽象的定义。因Z仅仅是表格需要编辑。这里有个监听器的注册方法,看一下CellEditorListener的定?
public interface CellEditorListener extends EventListener
{
void editingCanceled(ChangeEvent e)
void editingStopped(ChangeEvent e)
}
很显然编辑状态结束的关键在CellEditor上。你可以d发出事g通知CellEditorListener说结束了。也可以由外部调?
void cancelCellEditing()
boolean stopCellEditing()
触发。而CellEditorListener得到通知后通常可以调用
Object getCellEditorValue()来获得编辑器的倹{例如JTable 实CCellEditorListenerQ当你将你的TableCellEditor讄到JTableӞJTable׃注册上去?
有了灉|控制~辑和表现的接口Q也有了控制~辑和表现状态的转换机制.不过完全从这些接口开始构Z套自q实现Q也是很累的。显然swing已经有一套比较通用的实现?
首先看一下对于控制编辑和表现状态的转换QJTable有自q一套定义,在外部事件触发下单元格编辑和表现状态的转换Q比如在单元g双击
会得该单元D入编辑状态,当编辑状态的单元格失ȝҎQ该单元格离开~辑状态进入表现状态。在同一时刻只有一个单元格可以q入~辑状态等?
再来看一下DefaultTableCellRenderer和DefaultCellEditor
DefaultTableCellRendererl承JLabel实现TableCellRenderer 接口。也是说表格通常的单元格表现都是JLabellg?
q个实现其实有一个y妙之处,在实现
Component getTableCellRendererComponent(JTable table, Object
value, boolean isSelected, boolean hasFocus, int row, int column) {
。。。。。。。。。。?
return this;
}q个Ҏ?
最后一句return thisQ表明不单元格有多,JLabel对象一直只有一个,只是针对不同的单元格JLabel对象的状态不一P但实例只有一个,俭省很多资源?
DefaultCellEditorl承AbstractCellEditorQ而AbstractCellEditor
实现了TableCellEditor。这里顺便讲一下,swing对很多接口的实现都有q两个层ơ,对于default的都是一个可用的实现Q?
Abstract多是抽象c,他只实现了接口的一部分Q而这一部分通常都是很通用的。如果觉得default不能满要求Q而觉得实现整个接口又ȝQ?
Abstract的就很有用?
DefaultCellEditor有三个构造函敎ͼ
DefaultCellEditor(JCheckBox checkBox)
DefaultCellEditor(JComboBox comboBox)
DefaultCellEditor(JTextField textField)
因ؓ~辑不像表现那么单纯Q通常使用~辑器的对象Q如JTableQ都要获得编辑器的|然而不同编辑器的对外接口又是非常繁多的Q所以CellEditor有这样一个方?
Object getCellEditorValue()
Q也是说用编辑器的对象(如JTableQ不实际编辑器有多J杂Q它只通过Object
getCellEditorValue()q个Ҏ获取倹{那么当你要把你的编辑器用到比如JTable上,那么p考虑如何你的编辑器接口适配?
JTable期望的Object getCellEditorValue() 上?
DefaultCellEditor的构造函数就是一个提供了可以三U编辑器q行适配。其实这是一U适配器模式。也是DefaultCellEditor可以适配三种~辑器?
忽略了一个很重要的问题,是如何我们的~辑器或表现器注册到JTable上?
q个看是很简单的问题Q其实也q惌当中那么单?
先看一下JTable提供的明昄注册接口
void setCellEditor(TableCellEditor anEditor) Q?
void setDefaultEditor(Class<?> columnClass, TableCellEditor editor)
void setDefaultRenderer(Class<?> columnClass, TableCellRenderer renderer)
W一个接口很昄整个表格单元格的~辑器将p个注册的~辑器接?
后面两个是基于数据类型进行配|的Q也是说这U数据类型的单元格编辑器由注册的编辑器接管?
那么如何军_数据cd呢?看表格模型TableModel里有一个方?
Class<?> getColumnClass(int columnIndex)Q?
很明昑֒是否可编辑一P数据cd由模型决定?
除此之外q有另外的注册方法,那就是表格本w也是有其他元素l成Q在JTable中下一U元素是列,TableColumn。它有这两个Ҏ
void setCellEditor(TableCellEditor cellEditor)
void setCellRenderer(TableCellRenderer cellRenderer)
可以编辑器和表现器直接注册在列上,那么q一列的~辑或表现将׃注册的东西接?br />
]]>
վ֩ģ壺
mv߹ۿ|
ŷSUV|
ѹ18߹ۿ|
91Ʒר|
Ʒѿþþ㽶|
ëƬ벥|
ƷþþӰԺӰƬ|
ҹӰԺþþƷѿһ
|
ëƬaëƬѹۿ
|
ѹۿվ|
ձ˳ɻҳ߹ۿƵ
|
պƷ-|
Ůˬ̼ƵѲ|
վѹۿ|
**˹ëƬ|
aƬ߹ۿapp|
aѹۿվ|
ƷۺϾþ2007|
avëƬһ|
Ʒbv߹ۿ|
x8|
ɫվ|
ƷƬ߹ۿ|
˾Ʒ벥
|
Ů߲ͬ|
߹ۿĶ|
Ʒպ99߷|
þþWWWѾƷ|
Ʒþþþþþþþþþ|
ѹƵȫվ|
Դ
|
ɫʮʮɫ|
3dѶ߹ۿ|
һ߲|
弶ëƬѲ|
ɫƵ߹ۿwww|
aƷ|
˳վ18ֹþӰԺ|
aëƬ|
ؼavëƬѹۿ|
þþþƷС˵|