﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-键盘上的舞者-随笔分类-NetBeans</title><link>http://www.blogjava.net/chenweionline/category/41671.html</link><description>像写情书一样Coding...</description><language>zh-cn</language><lastBuildDate>Mon, 07 Mar 2011 16:28:32 GMT</lastBuildDate><pubDate>Mon, 07 Mar 2011 16:28:32 GMT</pubDate><ttl>60</ttl><item><title>Node的属性改变后通知属性表单（Propertites Sheet）更新</title><link>http://www.blogjava.net/chenweionline/archive/2011/03/06/345838.html</link><dc:creator>陈维</dc:creator><author>陈维</author><pubDate>Sun, 06 Mar 2011 14:15:00 GMT</pubDate><guid>http://www.blogjava.net/chenweionline/archive/2011/03/06/345838.html</guid><wfw:comment>http://www.blogjava.net/chenweionline/comments/345838.html</wfw:comment><comments>http://www.blogjava.net/chenweionline/archive/2011/03/06/345838.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenweionline/comments/commentRss/345838.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenweionline/services/trackbacks/345838.html</trackback:ping><description><![CDATA[Node API提供了一个方法在Node属性集变化时通知注册在其上的监听器更新。<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;firePropertySetsChange(Node.PropertySet[]&nbsp;o,&nbsp;Node.PropertySet[]&nbsp;n)</span></div>
<br />
如图，精灵动画就是一个自定义的Node，当使用鼠标将Node从A点拖拽到B点时，Node坐标已经改变，可以调用Node的<span style="color: #000000;">firePropertySetsChange()</span>方法通知属性表单（Propertites Sheet）更新显示。<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/chenweionline/Snapshot/673b34d149612692cf5cc.jpg" width="878" height="615" /><br />
<br />
因为<span style="color: #000000;">firePropertySetsChange()是个受保护（protected）的方法，如果需要在Node的外部调用，还可以包装在自定义的公共（public）方法里。</span><br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;"> notifySheetChange(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;firePropertySetsChange(</span><span style="color: #0000ff;">null</span><span style="color: #000000;">,&nbsp;Sheet.createDefault().toArray());<br />
}</span></div>
<br />
<img src ="http://www.blogjava.net/chenweionline/aggbug/345838.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenweionline/" target="_blank">陈维</a> 2011-03-06 22:15 <a href="http://www.blogjava.net/chenweionline/archive/2011/03/06/345838.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用TopComponent群组</title><link>http://www.blogjava.net/chenweionline/archive/2010/08/07/328216.html</link><dc:creator>陈维</dc:creator><author>陈维</author><pubDate>Sat, 07 Aug 2010 14:46:00 GMT</pubDate><guid>http://www.blogjava.net/chenweionline/archive/2010/08/07/328216.html</guid><wfw:comment>http://www.blogjava.net/chenweionline/comments/328216.html</wfw:comment><comments>http://www.blogjava.net/chenweionline/archive/2010/08/07/328216.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenweionline/comments/commentRss/328216.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenweionline/services/trackbacks/328216.html</trackback:ping><description><![CDATA[<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 12" />
<meta name="Originator" content="Microsoft Word 12" />
<link rel="File-List" href="file:///C:%5CUsers%5CLeon%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" />
<link rel="themeData" href="file:///C:%5CUsers%5CLeon%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
<link rel="colorSchemeMapping" href="file:///C:%5CUsers%5CLeon%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" /><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>ZH-CN</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
<w:UseFELayout/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math" />
<m:brkBin m:val="before" />
<m:brkBinSub m:val="--" />
<m:smallFrac m:val="off" />
<m:dispDef/>
<m:lMargin m:val="0" />
<m:rMargin m:val="0" />
<m:defJc m:val="centerGroup" />
<m:wrapIndent m:val="1440" />
<m:intLim m:val="subSup" />
<m:naryLim m:val="undOvr" />
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267">
<w:LsdException locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal" />
<w:LsdException locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 2" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 3" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 4" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 5" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 6" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 7" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 8" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 9" />
<w:LsdException locked="false" priority="39" name="toc 1" />
<w:LsdException locked="false" priority="39" name="toc 2" />
<w:LsdException locked="false" priority="39" name="toc 3" />
<w:LsdException locked="false" priority="39" name="toc 4" />
<w:LsdException locked="false" priority="39" name="toc 5" />
<w:LsdException locked="false" priority="39" name="toc 6" />
<w:LsdException locked="false" priority="39" name="toc 7" />
<w:LsdException locked="false" priority="39" name="toc 8" />
<w:LsdException locked="false" priority="39" name="toc 9" />
<w:LsdException locked="false" priority="35" qformat="true" name="caption" />
<w:LsdException locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title" />
<w:LsdException locked="false" priority="1" name="Default Paragraph Font" />
<w:LsdException locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle" />
<w:LsdException locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong" />
<w:LsdException locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis" />
<w:LsdException locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid" />
<w:LsdException locked="false" unhidewhenused="false" name="Placeholder Text" />
<w:LsdException locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1" />
<w:LsdException locked="false" unhidewhenused="false" name="Revision" />
<w:LsdException locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph" />
<w:LsdException locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote" />
<w:LsdException locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6" />
<w:LsdException locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis" />
<w:LsdException locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis" />
<w:LsdException locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference" />
<w:LsdException locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference" />
<w:LsdException locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title" />
<w:LsdException locked="false" priority="37" name="Bibliography" />
<w:LsdException locked="false" priority="39" qformat="true" name="TOC Heading" />
</w:LatentStyles>
</xml><![endif]--><style>
<!-- /* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 680460288 22 0 262145 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1107304683 0 0 415 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-520092929 1073786111 9 0 415 0;}
@font-face
{font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 680460288 22 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
mso-style-unhide:no;
mso-style-qformat:yes;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:21.0pt;
mso-char-indent-count:2.0;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:36.0pt;
mso-footer-margin:36.0pt;
mso-paper-source:0;}
div.Section1
{page:Section1;}
/* List Definitions */
@list l0
{mso-list-id:186913398;
mso-list-type:hybrid;
mso-list-template-ids:560772892 -411303738 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
{mso-level-text:%1、;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:18.0pt;
text-indent:-18.0pt;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
</style>
<![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--><span lang="EN-US">TopComponent</span><span style="font-family: 宋体;">群组的作用是在打开一个</span><span lang="EN-US">TopComponent</span><span style="font-family: 宋体;">组件的同时，打开其他相关的</span><span lang="EN-US">TopComponent</span><span style="font-family: 宋体;">组件。例如，当打开或者激活</span><span lang="EN-US">GUI</span><span style="font-family: 宋体;">编辑器的时候，&#8220;组件面板&#8221;、&#8220;属性&#8221;窗口和&#8220;检查器&#8221;窗口都会出现。当需要一个组件同时伴随着很多其他类似于组件面板窗口的时候，利用</span><span lang="EN-US">TopComponent</span><span style="font-family: 宋体;">群组可以轻松实现一个组件的激活引发其他组件被打开或者被选中。</span><strong><span style="font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US"><br />
<br />
</span></strong><span style="font-family: 宋体;">定义群组涉及到</span><span lang="EN-US">2</span><span style="font-family: 宋体;">种</span><span lang="EN-US">XML</span><span style="font-family: 宋体;">文件。首先是</span><span lang="EN-US">wsgrp</span><span style="font-family: 宋体;">，它代表&#8220;窗口系统群组（</span><span lang="EN-US">Window System Group</span><span style="font-family: 宋体;">）&#8221;。它定义了&#8220;窗口系统&#8221;的群组，系统根据它的定义查找对应的目录，它也定义了群组是否应该在启动时打开。另一个文件是</span><span lang="EN-US">wstcgrp</span><span style="font-family: 宋体;">，它代表&#8220;窗口系统</span><span lang="EN-US">TopComponent</span><span style="font-family: 宋体;">群组（</span><span lang="EN-US">Window System TopComponent Group</span><span style="font-family: 宋体;">）&#8221;，这个文件通过</span><span lang="EN-US">ID</span><span style="font-family: 宋体;">识别单态的</span><span lang="EN-US">TopComponent</span><span style="font-family: 宋体;">组件，同时还定义了一些群组的打开和关闭属性。</span><span lang="EN-US"><o:p><br />
<br />
</o:p></span><strong><span style="font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">TopComponent</span></strong><strong><span style="font-family: 宋体;">群组编程实例</span></strong><strong><span style="font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US"><o:p></o:p></span></strong><strong><span style="font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US"><o:p><br />
</o:p></span></strong><br />
<span style="font-family: 宋体;">首先</span><span style="font-family: 宋体;">创建</span><span style="font-family: 宋体;">一个模块项目</span><span lang="EN-US">TopComponentGroup</span><span style="font-family: 宋体;">，</span><span style="font-family: 宋体;">然后</span><span style="font-family: 宋体;">新建</span><span lang="EN-US">2</span><span style="font-family: 宋体;">个窗口组件（</span><span lang="EN-US">TopComponent</span><span style="font-family: 宋体;">），命名为</span><span lang="EN-US">EditorTopComponent</span><span style="font-family: 宋体;">和</span><span lang="EN-US">SatelliteTopComponent</span><span style="font-family: 宋体;">，就像窗口的名字所表示的那样，</span><span lang="EN-US">SatelliteTopComponent</span><span style="font-family: 宋体;">将会随着</span><span lang="EN-US">EditorTopComponent</span><span style="font-family: 宋体;">的打开和关闭一同打开和关闭。</span><span lang="EN-US"><span><br />
<br />
</span></span><span style="font-family: 宋体;">首先新建一个名为</span><span lang="EN-US">EditorGroupWsgrp</span><span style="font-family: 宋体;">的</span><span lang="EN-US">xml</span><span style="font-family: 宋体;">文件</span><span lang="EN-US"><span>，这个文件里定义了名为EditorGroup的编辑器窗口群组。 <br />
</span></span>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">group&nbsp;</span><span style="color: #ff0000;">version</span><span style="color: #0000ff;">="2.0"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">module&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="org.jqueen.nb.topcomponentgroup"</span><span style="color: #ff0000;">&nbsp;spec</span><span style="color: #0000ff;">="1.0"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">name&nbsp;</span><span style="color: #ff0000;">unique</span><span style="color: #0000ff;">="EditorGroup"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">state&nbsp;</span><span style="color: #ff0000;">opened</span><span style="color: #0000ff;">="false"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">group</span><span style="color: #0000ff;">&gt;</span></div>
<span lang="EN-US"><span><br />
</span></span><span lang="EN-US"><span>再新建一个名为SatelliteTopComponentWstcgrp的xml文件，在这个文件里可以通过ID识别出</span></span><span lang="EN-US">SatelliteTopComponent</span><span lang="EN-US"><span>组件</span></span><span style="font-family: 宋体;">。</span>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tc-group&nbsp;</span><span style="color: #ff0000;">version</span><span style="color: #0000ff;">="2.0"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tc-id&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="SatelliteTopComponent"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">open-close-behavior&nbsp;</span><span style="color: #ff0000;">open</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;">&nbsp;close</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">tc-group</span><span style="color: #0000ff;">&gt;</span></div>
<br />
<span style="font-family: 宋体;">编辑模块的</span><span lang="EN-US">layer.xml</span><span style="font-family: 宋体;">文件，在系统文件系统中的</span><span lang="EN-US">Windows2</span><span style="font-family: 宋体;">目录添加一个</span><span lang="EN-US">Group</span><span style="font-family: 宋体;">文件夹，将名为"EditorGroup"的群组添加进Group。<br />
</span>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">folder&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="Groups"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">file&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="EditorGroup.wsgrp"</span><span style="color: #ff0000;">&nbsp;url</span><span style="color: #0000ff;">="EditorGroupWsgrp.xml"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">folder&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="EditorGroup"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">file&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="SatelliteTopComponent.wstcgrp"</span><span style="color: #ff0000;">&nbsp;url</span><span style="color: #0000ff;">="SatelliteTopComponentWstcgrp.xml"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">folder</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">folder</span><span style="color: #0000ff;">&gt;</span></div>
<br />
编辑<span lang="EN-US">EditorTopComponent</span><span style="font-family: 宋体;">内容，重写TopComponent类的componentOpened()和componentClosed()方法，在</span><span lang="EN-US">EditorTopComponent</span><span style="font-family: 宋体;">被打开和关闭时打开和关闭名为"EditorGroup"的群组。<br />
</span>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;componentOpened()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TopComponentGroup&nbsp;group&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;WindowManager.getDefault().findTopComponentGroup(</span><span style="color: #000000;">"</span><span style="color: #000000;">EditorGroup</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(group&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;group.open();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;componentClosed()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TopComponentGroup&nbsp;group&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;WindowManager.getDefault().findTopComponentGroup(</span><span style="color: #000000;">"</span><span style="color: #000000;">EditorGroup</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(group&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;group.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br />
<span style="font-family: 宋体;">至此，就完成了一个TopComponent群组的编辑。执行模块项目，当从窗口菜单中打开EditorTopComponent时</span><span lang="EN-US">SatelliteTopComponent</span><span lang="EN-US"><span>会自动打开，</span></span><span style="font-family: 宋体;">EditorTopComponent被关闭时</span><span lang="EN-US">SatelliteTopComponent</span><span lang="EN-US"><span>也会自动关闭。</span></span><br />
<br />
<a target="_blank" title="样例程序下载" href="https://kenai.com/projects/topcomponentgroup">样例程序下载</a><br />
<br />
<img src ="http://www.blogjava.net/chenweionline/aggbug/328216.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenweionline/" target="_blank">陈维</a> 2010-08-07 22:46 <a href="http://www.blogjava.net/chenweionline/archive/2010/08/07/328216.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>与NetBeans6.8无关</title><link>http://www.blogjava.net/chenweionline/archive/2009/12/11/305648.html</link><dc:creator>陈维</dc:creator><author>陈维</author><pubDate>Fri, 11 Dec 2009 13:12:00 GMT</pubDate><guid>http://www.blogjava.net/chenweionline/archive/2009/12/11/305648.html</guid><wfw:comment>http://www.blogjava.net/chenweionline/comments/305648.html</wfw:comment><comments>http://www.blogjava.net/chenweionline/archive/2009/12/11/305648.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenweionline/comments/commentRss/305648.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenweionline/services/trackbacks/305648.html</trackback:ping><description><![CDATA[今天NetBeans 6.8正式发布，作为粉丝当然第一时间去官网下载。<br />
随手点开了Overview视频，视频随后部分介绍了一些基于NetBeans
Platform开发的富客户端应用，在5分53秒突然一张很熟悉的抓图跃入眼帘，那是我在07年在NetBeans
5.5上开发的一个图像处理富客户端应用，兴奋之余又开始习惯性的反省，这2年在Platform开发上没什么成绩，要努力。<br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/chenweionline/Snapshot/nb68overview.jpg" width="800" height="184" /><br />
<br />
<img src ="http://www.blogjava.net/chenweionline/aggbug/305648.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenweionline/" target="_blank">陈维</a> 2009-12-11 21:12 <a href="http://www.blogjava.net/chenweionline/archive/2009/12/11/305648.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Visual Library 2.0 - Examples</title><link>http://www.blogjava.net/chenweionline/archive/2009/09/14/295069.html</link><dc:creator>陈维</dc:creator><author>陈维</author><pubDate>Mon, 14 Sep 2009 12:58:00 GMT</pubDate><guid>http://www.blogjava.net/chenweionline/archive/2009/09/14/295069.html</guid><wfw:comment>http://www.blogjava.net/chenweionline/comments/295069.html</wfw:comment><comments>http://www.blogjava.net/chenweionline/archive/2009/09/14/295069.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenweionline/comments/commentRss/295069.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenweionline/services/trackbacks/295069.html</trackback:ping><description><![CDATA[<p>Visual Library是NetBeans中广泛使用的可视化函数库，用于展现复杂的上下文关系，如建模或流程绘图等工作。</p>
<p>Visual Library源自于NetBeans的社区项目，随着类库逐步发展成熟并被开发者认可，在2007年正式成为NetBeans
Platform. 6.0的一部分。目前的NetBeans
IDE中，BPEL业务流程设计器，Mobile开发以及JavaEE开发的设计工具都在使用Visual Library来实现可视化编辑效果。</p>
<p>Visual Library
2.0版本在使用时的编程风格同Swing类似，需要创建Scene场景包含，并使用Widgets生成所需的可视化元素，之后通过Scene场景的
createView操作来创建Swing的JComponent组件，以将可视化场景集成在Swing界面中呈现。</p>
<p>关于Visual Library的使用，官方站点已经给出非常好的示例代码，以展示Visual Library提供的几十种不同的功能和用法，包含Action的使用，可视化组件的生成与连接等。</p>
<p>示例代码下载页面：</p>
<p><a href="http://graph.netbeans.org/examples.html" target="_blank">http://graph.netbeans.org/examples.html</a>
</p>
<p>使用Visual Library开发的几个案例截图：</p>
<p><a href="http://graph.netbeans.org/screenshots/light-table.jpg" target="_blank"><img src="http://graph.netbeans.org/screenshots/mobility60.png" alt="" width="250" height="151" /> <img src="http://graph.netbeans.org/screenshots/jarvis.png" alt="" width="250" height="184" /> <img src="http://graph.netbeans.org/screenshots/light-table.jpg" alt="" width="250" height="152" />
</a>
</p>
<p><a href="http://graph.netbeans.org/screenshots/wsdl-editor.png" target="_blank"><img src="http://graph.netbeans.org/screenshots/robot-control.jpg" alt="" width="250" height="104" /> <img src="http://graph.netbeans.org/screenshots/casa-editor.png" alt="" width="250" height="162" /> <img src="http://graph.netbeans.org/screenshots/wsdl-editor.png" alt="" width="250" height="184" /></a>
</p>
<img src ="http://www.blogjava.net/chenweionline/aggbug/295069.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenweionline/" target="_blank">陈维</a> 2009-09-14 20:58 <a href="http://www.blogjava.net/chenweionline/archive/2009/09/14/295069.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用文件模板和向导创建一个类型文件</title><link>http://www.blogjava.net/chenweionline/archive/2009/09/14/295067.html</link><dc:creator>陈维</dc:creator><author>陈维</author><pubDate>Mon, 14 Sep 2009 12:45:00 GMT</pubDate><guid>http://www.blogjava.net/chenweionline/archive/2009/09/14/295067.html</guid><wfw:comment>http://www.blogjava.net/chenweionline/comments/295067.html</wfw:comment><comments>http://www.blogjava.net/chenweionline/archive/2009/09/14/295067.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenweionline/comments/commentRss/295067.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenweionline/services/trackbacks/295067.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 通过工具创建类型文件时通常会使用到各式各样的模板，例如IDE在创建java文件时会自动在文件头添加作者和创建日期的注释、XML文件会自动添加根元素的标签等。在NetBeans里通过使用文件模板可以很方便的按照既定的模式创建你的类型文件。我在《创建新的文件类型》里介绍了怎样创建一个自定义的文件类型，创建后的文件类型里就包含了一个名为MapTemplate.xmap的空文件模板。现在我们将...&nbsp;&nbsp;<a href='http://www.blogjava.net/chenweionline/archive/2009/09/14/295067.html'>阅读全文</a><img src ="http://www.blogjava.net/chenweionline/aggbug/295067.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenweionline/" target="_blank">陈维</a> 2009-09-14 20:45 <a href="http://www.blogjava.net/chenweionline/archive/2009/09/14/295067.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>创建新的文件类型</title><link>http://www.blogjava.net/chenweionline/archive/2009/09/14/295063.html</link><dc:creator>陈维</dc:creator><author>陈维</author><pubDate>Mon, 14 Sep 2009 12:23:00 GMT</pubDate><guid>http://www.blogjava.net/chenweionline/archive/2009/09/14/295063.html</guid><wfw:comment>http://www.blogjava.net/chenweionline/comments/295063.html</wfw:comment><comments>http://www.blogjava.net/chenweionline/archive/2009/09/14/295063.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenweionline/comments/commentRss/295063.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenweionline/services/trackbacks/295063.html</trackback:ping><description><![CDATA[<p>我们在开发过程中经常会根据数据组织形式的不同创造新数据格式，例如我为开发2D游戏地图所创造的xmap格式。NetNeans很方便的提供了对新数据格式的支持，我们现在就可以动手创建自己的文件格式。<br />
<br />
我们首先新建一个名为&#8220;Map Core&#8221;的模块项目，然后在这个模块里创建一个新的文件类型。<br />
<br />
创建文件类型的过程如下：<br />
<br />
1、点击菜单栏的新建文件选项，在弹出的向导对话框的类别列表里选择&#8220;模块开发&#8221;，在文件类型列表里选择&#8220;文件类型&#8221;，然后点击&#8220;下一步&#8221;按钮</p>
<p><img src="http://www.blogjava.net/images/blogjava_net/chenweionline/Snapshot/211132968.p.jpg" alt="" border="0" />
<br />
2、在文件识别面板，MIME类型输入框里输入我们自定义类型&#8220;text/x-map&#8221;，然后在文件扩展名输入框里输入文件扩展名&#8220;xmap&#8221;。文件扩展
名可以输入多个，用空格或者逗号分隔。如此可以使得这个新文件类型支持多种后缀的文件，例如jpg，jpeg后缀皆表示JPEG图像格式。输入完成后进行
下一步操作。</p>
<p><img src="http://www.blogjava.net/images/blogjava_net/chenweionline/Snapshot/211152609.p.jpg" alt="" border="0" /><br />
<br />
3、最后在输入类名前缀、图标和在磁盘上生成文件的位置，点击&#8220;完成&#8221;后NetBeans会根据输入自动生成和配置相关的几个文件。</p>
<p><img src="http://www.blogjava.net/images/blogjava_net/chenweionline/Snapshot/211211296.p.jpg" alt="" border="0" /><br />
<br />
我们已经成功创建了自己的MIME文件类型&#8220;text/x-map&#8221;，检查一下项目文件夹，NetBeans为我们自动创建了几个文件：</p>
<p>Icon_Map.gif 自定义xmap文件的默认图标。</p>
<p>MapDataObject.java 当系统发现xmap文件时会创造一个MapDataObject对象用来表示文件的内容。</p>
<p>MapResolver.xml 作为MIME类型解析器，它描述了&#8220;text/x-map&#8221;类型的文件后缀用于生成DataObject对象。</p>
<p>MapTemplate.xmap 这是一个xmap文件模板，我们可以在其中添加标准的内容后使用这个模板创建新的地图文件。</p>
<p>layer.xml 添加了内容用于注册MIME类型解析器和文件模板以及一系列标准操作，例如复制、粘贴等。</p>
<p><img src="http://www.blogjava.net/images/blogjava_net/chenweionline/Snapshot/211224531.p.jpg" alt="" border="0" /><br />
<br />
最后，我们将项目编译后在目标平台中重新装入，来检验新的文件类型。现在可以看到xmap类型的文件在安装了MapCore模块的目标平台上显示时和其他文件已经有所区别，使用了我们自己创建的图标，说明xmap类型文件已经被识别。</p>
<p><img src="http://www.blogjava.net/images/blogjava_net/chenweionline/Snapshot/211234328.p.jpg" alt="" border="0" /></p>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/chenweionline/aggbug/295063.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenweionline/" target="_blank">陈维</a> 2009-09-14 20:23 <a href="http://www.blogjava.net/chenweionline/archive/2009/09/14/295063.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>创建NetBeans模块项目</title><link>http://www.blogjava.net/chenweionline/archive/2009/09/14/295062.html</link><dc:creator>陈维</dc:creator><author>陈维</author><pubDate>Mon, 14 Sep 2009 12:19:00 GMT</pubDate><guid>http://www.blogjava.net/chenweionline/archive/2009/09/14/295062.html</guid><wfw:comment>http://www.blogjava.net/chenweionline/comments/295062.html</wfw:comment><comments>http://www.blogjava.net/chenweionline/archive/2009/09/14/295062.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenweionline/comments/commentRss/295062.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenweionline/services/trackbacks/295062.html</trackback:ping><description><![CDATA[<p>学习NetBeans模块开发首先需要做的就是创建一个NetBenas的模块项目，使用NetNeans IDE提供的新建项目向导只需要经过4个步骤就可以新建一个模块项目。</p>
<p>1、首先IDE菜单中的新建项目创建一个新项目，在向导对话框中的项目类别选择&#8220;NetBeans 模块&#8221;，项目选择&#8220;模块&#8221;。</p>
<p><img src="http://www.blogjava.net/images/blogjava_net/chenweionline/Snapshot/180650125.p.jpg" alt="" border="0" /><br />
</p>
<p><br />
2、下一步填写项目名称和项目所在的磁盘位置。我将项目命名为&#8220;MapCore&#8221;。</p>
<p><img src="http://www.blogjava.net/images/blogjava_net/chenweionline/Snapshot/180653859.p.jpg" alt="" border="0" /><br />
</p>
<p><br />
3、接下来填写代码名称基和模块显示名称。项目名称基的作用类似于Java类的包名，用来标识一个NB模块。模块显示名称顾名思义模块用于显示的名字。</p>
<p><img src="http://www.blogjava.net/images/blogjava_net/chenweionline/Snapshot/180654218.p.jpg" alt="" border="0" /><br />
</p>
<p>4、点击&#8220;完成&#8221;按钮结束MapCore模块的创建，创建后的项目文件结构如下：</p>
<p><img src="http://www.blogjava.net/images/blogjava_net/chenweionline/Snapshot/181359968.p.jpg" alt="" border="0" /></p>
<p><br />
</p>
<img src ="http://www.blogjava.net/chenweionline/aggbug/295062.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenweionline/" target="_blank">陈维</a> 2009-09-14 20:19 <a href="http://www.blogjava.net/chenweionline/archive/2009/09/14/295062.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>将你的文件类型集合进XML编辑器（第二部分）</title><link>http://www.blogjava.net/chenweionline/archive/2009/09/14/295060.html</link><dc:creator>陈维</dc:creator><author>陈维</author><pubDate>Mon, 14 Sep 2009 12:03:00 GMT</pubDate><guid>http://www.blogjava.net/chenweionline/archive/2009/09/14/295060.html</guid><wfw:comment>http://www.blogjava.net/chenweionline/comments/295060.html</wfw:comment><comments>http://www.blogjava.net/chenweionline/archive/2009/09/14/295060.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenweionline/comments/commentRss/295060.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenweionline/services/trackbacks/295060.html</trackback:ping><description><![CDATA[<p>我发现了昨天的错误。不用将 <tt>MultiDataObject </tt>
替换成 <tt>XMLDataObject，你只需要简单地确认 MIME 类型是以"+xml"结尾。例如，类似</tt>
<tt> text/x-foo+xml。一旦你这样做了，你的文档就会在 XML 编辑器里</tt>
<tt>打开。换句话说，你拥有免费的语法着色，简单的确保 MIME 类型正确。根据昨天 Blog 里</tt>
<tt>描述</tt>
<tt>的4个步骤</tt>
<tt>增加 Cookies 可以为你提供 XML 的检查、验证和根据 XSLT 改变功能。诸如此类，事实上</tt>
<tt>尽管那个文件类型不是以".xml"结尾。</tt>
</p>
<p>最后，添加一个导航器，以便我们能够获取我们的 XML 文件提纲和便于我们在导航器里节点的跳跃关联到 XML 编辑器。</p>
<p>在这里教你怎样添加 XML 导航器：</p>
<p>1、必须确保你的 MIME 类型处于 <tt>text/x-foo+xml 模式，否则 XML 导航器将不会工作。当我们点击一个节点，一个行的文档将会打开，并且新的文档不含有语法着色，换句话说，你的文档内容将打开在一般的文本编辑器里。从3个地方可以看出你的 MIME 类型是否正确，MIME 类型的</tt>
resolver、Layer 文件和 DataLoader。（译者注：NB6.5 上验证需要检查 XxxResolver.xml 和 layer.xml 文件）</p>
<p>2、在重要文件节点里，展开&lt;XML
层&gt;和其中的&lt;上下文中的此层&gt;。找到导航文件夹，在导航文件夹里创建一个新的文件夹。这个文件夹的名字必须和你的 MIME
类型相同。然后复制XML文件夹下的内容到你的文件夹里。祝贺你，你已经制作了XML导航器用于激活你的 MIME 类型。</p>
<p>3、安装模块。如果你安装在开发 IDE 上，你就必须重新启动 IDE 使 XML 导航器注册生效。</p>
<p><br />
</p>
<p>现在，每当文档得到焦点，XML导航器就会显示文档的提纲。另外，你可以使用 XML 导航器导航到文档的任何地方，就像显示的那样：</p>
<p><img src="http://album.hi.csdn.net/app_uploads/chenweionline/20090702/011600812.p.png?d=20090702015919609" mce_src="http://album.hi.csdn.net/app_uploads/chenweionline/20090702/011600812.p.png?d=20090702015919609" alt="navigator-for-own-file-type-xml.png" width="550" height="389" />
</p>
<p><br />
</p>
<hr />
<p>
原文地址：<a href="http://blogs.sun.com/geertjan/entry/integrating_the_xml_editor_for" mce_href="http://blogs.sun.com/geertjan/entry/integrating_the_xml_editor_for" target="_blank">http://blogs.sun.com/geertjan/entry/integrating_the_xml_editor_for</a>
</p>
<p><br />
</p>
<img src ="http://www.blogjava.net/chenweionline/aggbug/295060.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenweionline/" target="_blank">陈维</a> 2009-09-14 20:03 <a href="http://www.blogjava.net/chenweionline/archive/2009/09/14/295060.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>将你的文件类型集合进XML编辑器（第一部分）</title><link>http://www.blogjava.net/chenweionline/archive/2009/09/14/295058.html</link><dc:creator>陈维</dc:creator><author>陈维</author><pubDate>Mon, 14 Sep 2009 12:01:00 GMT</pubDate><guid>http://www.blogjava.net/chenweionline/archive/2009/09/14/295058.html</guid><wfw:comment>http://www.blogjava.net/chenweionline/comments/295058.html</wfw:comment><comments>http://www.blogjava.net/chenweionline/archive/2009/09/14/295058.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenweionline/comments/commentRss/295058.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenweionline/services/trackbacks/295058.html</trackback:ping><description><![CDATA[<p>感谢<a href="http://blogs.sun.com/vdblog" mce_href="http://blogs.sun.com/vdblog"> Vadiraj</a>
的帮助，我现在知道了如何在XML编辑器里打开非XML文件。有时候你拥有一个内容是XML但是却并非以&#8220;.xml&#8221;结尾的文件。如何让IDE把它看作一
个XML文件呢？接下来你可以看到一个后缀为&#8220;.test&#8221;的文件在XML编辑器里被打开。你知道它被打开是因为语法着色和缩进，以及XML文件特有的附
加菜单项：</p>
<p><img src="http://album.hi.csdn.net/app_uploads/chenweionline/20090701/100728281.p.png?d=20090701100750843" mce_src="http://album.hi.csdn.net/app_uploads/chenweionline/20090701/100728281.p.png?d=20090701100750843" alt="own-extension-xml.png" width="600" height="282" />
</p>
<p>1、使用文件类型向导，会创建一些不同的类。只需要修改名为 <tt>XxxDataObject 的类。</tt>
</p>
<p>2、为模块依赖关系添加 XML Tools API。</p>
<p>3、在 DataObject 里，将继承的类由 <tt>MultiDataObject</tt>
改为 XMLDataObject。</p>
<p>4、在构造函数里补充验证 XML、确认 XML 和使用 XSLT 改变 XML 样式等附加功能所提供的 Cookies，像这样：</p>
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;TestDataObject(FileObject&nbsp;pf,&nbsp;TestDataLoader&nbsp;loader)&nbsp;</span><span style="color: rgb(0, 0, 255);">throws</span><span style="color: rgb(0, 0, 0);">&nbsp;DataObjectExistsException,&nbsp;IOException&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">super</span><span style="color: rgb(0, 0, 0);">(pf,&nbsp;loader);<br />
&nbsp;&nbsp;&nbsp;&nbsp;CookieSet&nbsp;cookies&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;getCookieSet();<br />
&nbsp;&nbsp;&nbsp;&nbsp;InputSource&nbsp;is&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;DataObjectAdapters.inputSource(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;Source&nbsp;source&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;DataObjectAdapters.source(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;cookies.add(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;CheckXMLSupport(is));<br />
&nbsp;&nbsp;&nbsp;&nbsp;cookies.add(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;ValidateXMLSupport(is));<br />
&nbsp;&nbsp;&nbsp;&nbsp;cookies.add(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;TransformableSupport(source));<br />
&nbsp;&nbsp;&nbsp;&nbsp;cookies.add((Node.Cookie)&nbsp;DataEditorSupport.create(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">,&nbsp;getPrimaryEntry(),&nbsp;cookies));<br />
}</span></div>
<p>
</p>
<p>5、确认导入合适的声明。</p>
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;java.io.IOException;<br />
</span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;javax.xml.transform.Source;<br />
</span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;org.netbeans.spi.xml.cookies.CheckXMLSupport;<br />
</span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;org.netbeans.spi.xml.cookies.DataObjectAdapters;<br />
</span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;org.netbeans.spi.xml.cookies.TransformableSupport;<br />
</span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;org.netbeans.spi.xml.cookies.ValidateXMLSupport;<br />
</span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;org.openide.filesystems.FileObject;<br />
</span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;org.openide.loaders.DataObjectExistsException;<br />
</span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;org.openide.loaders.XMLDataObject;<br />
</span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;org.openide.nodes.CookieSet;<br />
</span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;org.openide.nodes.Node;<br />
</span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;org.openide.text.DataEditorSupport;<br />
</span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;org.xml.sax.InputSource;</span></div>
<p>
</p>
<p>就这样，你已经完成。你的文件现在可以被看作是一个 XML 文件，就像其他所有的 XML 文件一样。</p>
<p><br />
</p>
<hr />
<p>
原文地址：<a href="http://blogs.sun.com/geertjan/entry/integrating_the_xml_edior_for" mce_href="http://blogs.sun.com/geertjan/entry/integrating_the_xml_edior_for" target="_blank">http://blogs.sun.com/geertjan/entry/integrating_the_xml_edior_for</a>
</p>
<img src ="http://www.blogjava.net/chenweionline/aggbug/295058.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenweionline/" target="_blank">陈维</a> 2009-09-14 20:01 <a href="http://www.blogjava.net/chenweionline/archive/2009/09/14/295058.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>