??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲婷婷在线,精品国产一区久久,国产精品国产精品国产专区不蜜http://www.aygfsteel.com/kermart/kzh-cnTue, 17 Jun 2025 06:57:30 GMTTue, 17 Jun 2025 06:57:30 GMT60Eclipse版本、插件介l?http://www.aygfsteel.com/kermart/archive/2012/07/26/384064.htmlkermartkermartThu, 26 Jul 2012 06:32:00 GMThttp://www.aygfsteel.com/kermart/archive/2012/07/26/384064.htmlhttp://www.aygfsteel.com/kermart/comments/384064.htmlhttp://www.aygfsteel.com/kermart/archive/2012/07/26/384064.html#Feedback0http://www.aygfsteel.com/kermart/comments/commentRss/384064.htmlhttp://www.aygfsteel.com/kermart/services/trackbacks/384064.htmlEclipse IDE for Java Developers 是Eclipse的platform加上JDT插gQ用来java开发的

Eclipse IDE for Java EE Developers 应该是Eclipse的platform加上WTP插gQ用来java企业U开发的

Eclipse IDE for C/C++ Developers 是Eclipse的platform加上CDT插gQ用来做C和C++开发的

Eclipse for RCP/Plug-in Developers 是Eclipse的SDKQ主要用来插件开?/span>

Eclipse Classic 是原来的EclipseQ是Eclipse的基本版Q还是主要用来开发java

Eclipse的功能是通过插g来实现的Q下面了解主要插件的功能?/p>

JDTQJava Development ToolsQ:Java设计工具?br />PDTQ用于开发PHP语言的工兗?br />C/C++ IDEQ用于设计C/C++目?br />PDEQPlugin Development EnvironmentQ:插g设计环境Q用于设计自定义插g?br />PlatformQEclipse的核心运行^台?br />EMFQEclipse Modeling FrameworkQ:Eclipse模型框架?br />GEFQGraphical Editor FrameworkQ:囑Ş~辑框架Q用于辅助图形设计?br />UML2QUML~辑器?/span>

WTP(Web Tools Platform )Q是一个开发J2EE Web应用E序的工具集。WTP包含以下工具Q?/span>
     * 一个源码编辑器可以用来~辑HTML, Javascript, CSS, JSP, SQL, XML, DTD, XSD, 和WSDL?br />     * 一个图形编辑器用来~辑XSD与WSDL?br />     * J2EE目构徏器和一个J2EE向导工具?br />     * 一个Web服务创徏向导和管理器Q和WS-I 试工具?br />     * 一个数据库讉KQ查询工L?br />  WTP׃个子目构成:WST(Web标准工具? 与JST(J2EE标准工具?
VEQVisual EditorQ:可视化图形编辑组Ӟ用于提供AWT/SWT/Swing的图形编辑?br />J2EE Standard ToolsQ用于设计J2EE应用E序的插件?br />WST-Web Standards ToolsQ用于设计Web应用E序的插件?br />Eclipse Test and Performance Tools PlatformQ用于调试,单元试和测试项目的插g?br />Business Intelligence and Reporting ToolsQBIRTQ:商业和商业报表开发插Ӟ它包括ChartEngineQ图形引擎)、Report FrameworkQ报表框Ӟ、Runtime ENVQ运行时环境Q?br />AJDT-AspectJ Development ToolsQ用于开发AOPQ面向方面编E)的开发Eclipse插g?br />AspectJQ用于开发AOP的开发环境?br />CMEQConcern Manipulation EnvironmentQ:用于开发AOP的一l可视化工具插g?/span>



kermart 2012-07-26 14:32 发表评论
]]>
分层Panel构与Swinglg高Ҏ的实现 http://www.aygfsteel.com/kermart/archive/2012/07/26/384032.htmlkermartkermartThu, 26 Jul 2012 03:21:00 GMThttp://www.aygfsteel.com/kermart/archive/2012/07/26/384032.htmlhttp://www.aygfsteel.com/kermart/comments/384032.htmlhttp://www.aygfsteel.com/kermart/archive/2012/07/26/384032.html#Feedback0http://www.aygfsteel.com/kermart/comments/commentRss/384032.htmlhttp://www.aygfsteel.com/kermart/services/trackbacks/384032.html  一直以来想写一文章来描述q个关键l构Q但每次总被自己的语a表达能力所限制。Swingq个_yl构是我Ҏ的原因之一。虽然一般的GUIpȝ设计原理我都知道Q但是细节如此处_却不是一开始就能清楚的。我?000q以前曾l写q大量基于AWT Canvas的自定义lgQ当时认为Swing的自定义lg也不q如此,原理不过也是l我一个刷子,我给你画出来。但是上q所说的q些Ҏ,却从来没能实现过。我惌很多ҎQ做q很多实验,但终I没有想透这一层。之后某ơ偶然机会,看到了下面这张著名的图,使我豁然开朗。让我又一ơ理解了创新需要蟩出旧的思维模式勇气和智慧?/div>

  单来说Swing中这些顶层容器的多Panel构是实现这些特性的基础。这些Pane实际是一些特D的JComponentQ它们之间存在包含被包含、覆盖被覆盖的树状多层次l构。我重新M上面q张图,使得其更具体、更直观Q更Ҏ理解些:

其实有了q张图,加上囑Şpȝ中Z-order的概念,׃隄解ƈ实现上面提到的特性。Z-order概念和图形学中Z深度是一致的。离观察点近的物体L会遮挡离观察点远的物体。物体所在法q面观察点的距d是所谓Z深度。Swing中通过先画出Z-orderq()的组Ӟ再画Z-orderq(大)的组件的Ҏ实现lg之间的遮挡关pR每个组件所在^面的都有一个数字描q其位置Q这个位|同三维坐标pM的Z轴类|观察者越q,坐标大Q?

  Swing的顶层容器都包含有一个JRootPaneQ该JRootPane是一切SwinglgL。JRootPane中包含了一个JLayeredPane和一个GlassPane。GlassPane和JLayeredPane都是充满JRootPane的。GlassPane~省情况下是不可见的Q因此我们看到都是JLayeredPane。GlassPane如果是可见的Q它Z-order大于M其他lgQ因此它会覆盖住整个H口Q得所有的鼠标事g都被它截莗另外通常可见情况下它是透明的,因此你能仍然看到JLayeredPane上面的一切,但是JLayeredPane上面的组仉得不到鼠标事件?br />GlassPaneq个奇怪的lg主要是用来实现Drag & Drop以及跨组件渲染用的。NetBeans和Eclipse中哪U常见的Docking Frame的实现就和这U组件相兟뀂这些工E、文件、源代码的窗口其实不q是普通的SwinglgQ它们本wƈ不能实现q种拖拽功能。鼠标在它们上面标题栏区域按下之后,标题栏组件会到q种事gQ经q粘q性判断后Q如果发现这些鼠标事件目的是拖拽H口Q这UDockingpȝ׃拖拽区域(x谓的ClientArea)的GlassPane讄为可见,于是下面的一些列拖拽鼠标事gpq个GlassPane所接管了过厅RGlassPane是覆盖于应用E序ClientArea的透明lgQ它处理q些事g时计出当前鼠标位置所蕴含着的拖拽动作,q根据这些动作画出相应的焦点矩Ş。NetBeans的Docking Framework一个拖拽过E如下图所C?注意GlassPane是背景透明的,所以可以在上面画背景透明的焦点矩形:

  JLayeredPane是实现弹出式H口或类似Pallete动H口的主要组件。如同它的名字一P它将自己的内部结构也分成许多亚层。在使用它的add(Component, Object)Ҏ加入lgӞW二个参数是一个Integer|q个值决定了加入的层。这个值相当于前面所说的Z-order倹{目前主要有下面几个预定义|
public final static Integer DEFAULT_LAYER = new Integer(0);
q层加入的缺省层?br />  public final static Integer PALETTE_LAYER = new Integer(100);
q层是定义PaletteH口的层。UQ动选项H口属于q一层?br />  public final static Integer MODAL_LAYER = new Integer(200);
q层是模态对话框的层。这个模态对话框应该是指JInternalFrame的模态对话框Q而不是JDialog?br />  public final static Integer POPUP_LAYER = new Integer(300);
q层是菜单、下拉框H口、Tooltip{窗口Q动的层?br />  public final static Integer DRAG_LAYER = new Integer(400);
q一层是拖拽层,lg可以在这一层被托拽?/div>
  public final static Integer FRAME_CONTENT_LAYER = new Integer(-30000);
q一层是ContentPane和MenuBar所在的层。注意它非常,前面所有层的组仉会覆盖这一层的lg。我们知道ContentPane是所有应用程序组件所在的地方?/div>
  JLayeredPane直接包含有ContentPanelg。应用程序如果定了MenuBarQJLayeredPaneq包含MenuBar。注意JLayeredPane本n没有布局理器,它对lg的布局是由它的父容器JRootPane的布局理器RootLayout来完成的。简单来_所在层数值小的组件有可能被高层组件所覆盖。Swing不同类型的lg攄在不同层面上Q就实现了文章一开始提到的Ҏ:菜单、Q动窗口、下拉框H口和Tooltip{。当然这些窗口有可能不是JLayeredPane上的轻量USwinglgQ当它们的边界超q顶层容器的H口Ӟq些H口的就变成了重量AWTH口。这在上一文章?a target="_blank">如何hSwing和AWTlg?span style="font-family: 宋体">中已l提到过?/span>
  下面是这些Panelg之间的树状包含关pdQ?/div>

  本文的目的是讲述Swing的这U组件层ơ结构,q不是讲q如何用JLayeredPane和GlassPane来实现某中特D的功能。如果需要学习如何用它们实现某些特D效果,Java Tutorial的Swing部分提供了详的~程资料。Java Tutorial的Swing部分~程在:


kermart 2012-07-26 11:21 发表评论
]]>NetBeans中自动生成JFrame的布局理?http://www.aygfsteel.com/kermart/archive/2012/07/26/384030.htmlkermartkermartThu, 26 Jul 2012 03:02:00 GMThttp://www.aygfsteel.com/kermart/archive/2012/07/26/384030.htmlhttp://www.aygfsteel.com/kermart/comments/384030.htmlhttp://www.aygfsteel.com/kermart/archive/2012/07/26/384030.html#Feedback0http://www.aygfsteel.com/kermart/comments/commentRss/384030.htmlhttp://www.aygfsteel.com/kermart/services/trackbacks/384030.htmlNetBeans自动生成的JFrameH体默认使用了自p计的布局GroupLayout?/span>


   默认d的面板(JPanel){容器也都是用了自由布局GroupLayout方式?/span>


    q将D我们自己在代码中动态添加的lg无法昄在窗体上Q因此需要手工重讑֮器的布局方式。(寚w要动态添加的lgQ可以先M个面板,重设布局Q再在面板上d自己的组件。)Q即重新弹出一个窗口)


     NetBeans对GridBagLayout提供了可定制的布局Q对GridLayoutQBorderLayout,FlowLayout也有比较好的支持。绝对布局Q需要NetBeans的包支持Q不使用?/span>


     对BoxLayout支持不够好,不可调间隙。自由布局和NULL布局Q不会自动适应H体变化?/span>


     ׃GridBagLayout布局在改变窗体大的时候,可以基本保持原ŞQ徏议在NetBeans中设计窗体时使用GridBagLayout布局Q也可以l合GridLayout,BorderLayout,FlowLayoutq行布局



kermart 2012-07-26 11:02 发表评论
]]>
Freemarker http://www.aygfsteel.com/kermart/archive/2012/07/20/383586.htmlkermartkermartFri, 20 Jul 2012 03:46:00 GMThttp://www.aygfsteel.com/kermart/archive/2012/07/20/383586.htmlhttp://www.aygfsteel.com/kermart/comments/383586.htmlhttp://www.aygfsteel.com/kermart/archive/2012/07/20/383586.html#Feedback0http://www.aygfsteel.com/kermart/comments/commentRss/383586.htmlhttp://www.aygfsteel.com/kermart/services/trackbacks/383586.html


FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具Q用纯Java~写

FreeMarker被设计用来生成HTML Web面Q特别是ZMVC模式的应用程?/p>

虽然FreeMarkerh一些编E的能力Q但通常由JavaE序准备要显C的数据Q由FreeMarker生成面Q通过模板昄准备的数?/p>



FreeMarker不是一个Web应用框架Q而适合作ؓWeb应用框架一个组?/p>

FreeMarker与容器无养I因ؓ它ƈ不知道HTTP或ServletQFreeMarker同样可以应用于非Web应用E序环境

FreeMarker更适合作ؓModel2框架Q如StrutsQ的视图lgQ你也可以在模板中用JSP标记?/p>

FreeMarker是免费的

而且你还可以通过Eclipse的插?/a>来编辑FreeMarkerQ经q验证,FreeMarker 最好的 Eclipse ~辑插g?JBoss Tools?/p>

FreeMarkerҎ?/strong>

1、通用目标

能够生成各种文本QHTML、XML、RTF、Java源代码等{?/span>

易于嵌入C的品中Q轻量Q不需要Servlet环境

插g式模板蝲入器Q可以从M源蝲入模板,如本地文件、数据库{等

你可以按你所需生成文本Q保存到本地文gQ作为Email发送;从Web应用E序发送它q回lWeb览?/span>

2、强大的模板语言

所有常用的指oQinclude、if/elseif/else、@环结?/span>

在模板中创徏和改变变?/span>

几乎在Q何地斚w可以使用复杂表达式来指定?/span>

命名的宏Q可以具有位|参数和嵌套内容

名字I间有助于徏立和l护可重用的宏库Q或者将一个大工程分成模块Q而不必担心名字冲H?/span>

输出转换块:在嵌套模板片D는成输出时Q{换HTML转义、压~、语法高亮等{;你可以定义自q转换

3、通用数据模型

FreeMarker不是直接反射到Java对象QJava对象通过插g式对象封装,以变量方式在模板中显C?/span>

你可以用抽象(接口Q方式表C对象(JavaBean、XML文、SQL查询l果集等{)Q告诉模板开发者用方法,使其不受技术细节的打扰

4、ؓWeb准备

在模板语a中内建处理典型Web相关dQ如HTML转义Q的l构

能够集成到Model2 Web应用框架中作为JSP的替?/span>

支持JSP标记?/span>

为MVC模式设计Q分d视化设计和应用程序逻辑Q分页面设计员和程序员

5、智能的国际化和本地?/span>

字符集智能化Q内部用UNICODEQ?/span>

数字格式本地化敏?/span>

日期和时间格式本地化敏感

非US字符集可以用作标识(如变量名Q?/span>

多种不同语言的相同模?/span>

6、强大的XML处理能力

<#recurse> ?lt;#visit>指oQ?.3版本Q用于递归遍历XML?/span>

在模板中清楚和直觉的讉KXML对象模型





kermart 2012-07-20 11:46 发表评论
]]>
java 中的 各种变量、代码块执行时机http://www.aygfsteel.com/kermart/archive/2012/07/10/382700.htmlkermartkermartTue, 10 Jul 2012 05:00:00 GMThttp://www.aygfsteel.com/kermart/archive/2012/07/10/382700.htmlhttp://www.aygfsteel.com/kermart/comments/382700.htmlhttp://www.aygfsteel.com/kermart/archive/2012/07/10/382700.html#Feedback0http://www.aygfsteel.com/kermart/comments/commentRss/382700.htmlhttp://www.aygfsteel.com/kermart/services/trackbacks/382700.html前言Q?/strong>q属?java 的基知识Q你可以不了解,也可以不拿它当一回事Q代码也一栯敲的畅Q这是很久之前,我从 C++ ?java 刚入门那会的看法Q那会我坚持自己的理念:
    重实践,讲运用,ȝ论。当Ӟ对同一样事物,在不同阶D也会有不一L看法Q这理念在某个时D已l不适合我,早就被抛弃了。不扯E了,直接q入主题?br />
java 中的变量大致分ؓ 成员变量 ?局部变?两大cR?br />
成员变量Q?br />    在类体里面定义的变量UCؓ成员变量Q?br />    如果该成员变量有 static 关键字修饎ͼ则该成员变量UCؓ 静态变?/strong> ?cd?/strong>Q?br />    如果该成员变量没?static 关键字修饎ͼ则该成员变量被称?非静态变?/strong> ?实例变量?br />
局部变量:
    形参、方法内定义的变量、代码块中定义的变量Q都属于局部变量?br />
cd?Q?strong>静态变?/strong>Q?br />    1. 可以向前引用
    2. 变量属于cLw?br />    3. cd量不依赖cȝ实例Q类变量只在初始化时候在栈内存中被分配一ơ空_无论cȝ实例被创建几ơ,都不再ؓcd量分配空?br />    4. 通过cȝL一个实例来讉Kcd量,底层都将其转ؓ通过cLw来讉Kcd量,它们的效果是一L
    5. 一旦类变量的D改变Q通过cLcȝL一个实例来讉Kcd量,得到的都是被改变后的?br />    6. 在cȝ初始化之前初始化

实例变量Q非静态变量)
    1. 不能向前引用Q如果向前引用,则称为非法向前引用,q是不允许的
    2. 变量属于cȝ实例对象
    3. 随着cȝ实例被创分配内存空?br />
非静态代码块
    直接?{ } 包v来的代码Q称为非静态代码块

静态代码块
    直接?static { } 包v来的代码Q称为静态代码块

cd量(静态变量)、实例变量(非静态变量)、静态代码块、非静态代码块 的初始化时机
    ?static 关键字修饰的Q如Q类变量[静态变量]、静态代码块Q将在类被初始化创徏实例对象之前被初始化Q而且是按序从上C依次被执行;
    没有 static 关键字修饰的Q如Q实例变量[非静态变量]、非静态代码块Q初始化实际上是会被提取到类的构造器中被执行的,但是会比cL造器中的
    代码块优先执行到Q其也是按顺序从上到下依ơ被执行?br />
- 以上是本人在d PDF 后的个hW记和理解以及见解,不见得百分百对,以下附上本h试CZ代码Q会更有说服?br />
CZ代码
 1
 2/**
 3 * -----------------------------------------
 4 * @文g: Statical.java
 5 * @作? fancy
 6 * @邮箱: fancydeepin@yeah.net
 7 * @旉: 2012-7-9
 8 * @描述: TEST
 9 * -----------------------------------------
10 */

11public class Statical {
12
13 /**
14     * 静态代码块
15     * cd?静态变?可以向前引用(卻I先引?再定?
16     */

17    static {
18        name = "fancydeepin"// name 的定义在使用之后
19        System.out.println("--->  静态代码块被执?nbsp;  <---");
20    }

21 /**
22     * cd?静态变?在类的初始化之前初始?无论cȝ实例被创徏多少?br />23     * cd?静态变?都将只在初始化时候在栈内存上分配一ơ空?br />24     * ?nbsp;static 修饰?都将按位|被序执行Q所以,
25     * name 的值最l输?nbsp;fancy 而不是上面的 fancydeepin
26     */

27    public static String name = "fancy"//cd?静态变?
28    private String mail = "myEmail"//实例变量(非静态变?Q定义时指定初始|会比在构造器赋予值更早执?/span>
29    
30    public Statical() {
31        mail = "fancydeepin@yeah.net";
32        System.out.println("---> 构造器代码块被执行 <---");
33    }

34 /**
35     * 非静态代码块
36     * 实际上,非静态代码块在类初始化创建实例时Q将会被提取到类的构造器中,
37     * 但是Q非静态代码块会比构造器中的代码块优先被执行
38     * 所以,mail 最l输出的是类构造器中给定的|也就?nbsp;fancydeepin@yeah.net
39     * 而不?nbsp;1525336367@qq.comQ更不是 myEmail
40     */

41    {
42        mail = "1525336367@qq.com";
43        System.out.println("---> 非静态代码块被执?nbsp;<---");
44    }

45    
46    // getting and setting 
47


试cȝ例代?/p>

 1
 2      /**
 3         * cd?静态变?在类被初始化创徏实例之前被初始化
 4         */

 5        System.out.println("-----------------> @1 <----------------");
 6        System.out.println("name --->> " + Statical.name); // @1
 7        System.out.println("-----------------> @1 <----------------");
 8       /**
 9         * 创徏cȝ实例对象
10         */

11        System.out.println("-----------------> @6 <----------------");
12        Statical statical = new Statical(); // @6
13        System.out.println("-----------------> @6 <----------------");
14        /**
15         * 通过实例来访问类变量,底层{化成通过cLw来讉Kcd?br />16         */

17        System.out.println("-----------------> @2 <----------------");
18        System.out.println("name --->> " + statical.name); // @2
19        System.out.println("-----------------> @2 <----------------");
20       /**
21         * 如果cd量的D改变,再访问类变量,得到被改变后的?br />22         */

23        Statical.name = "fancydeepin";
24        
25        System.out.println("-----------------> @3 <----------------");
26        System.out.println("name --->> " + statical.name); // @3
27        System.out.println("-----------------> @3 <----------------");
28        
29        System.out.println("-----------------> @4 <----------------");
30        System.out.println("name --->> " + Statical.name); // @4
31        System.out.println("-----------------> @4 <----------------");
32       /**
33         * 非静态代码块 ?nbsp;构造器 被执行的时机
34         */

35        System.out.println("-----------------> @5 <----------------");
36        System.out.println("mail --->> " + statical.getMail()); // @5
37        System.out.println("-----------------> @5 <----------------");
38


后台输出l果


-----------------> @1 <----------------
--->  静态代码块被执?nbsp;  <---
name 
--->> fancy
-----------------> @1 <----------------

-----------------> @6 <----------------
---> 非静态代码块被执?nbsp;<---
---> 构造器代码块被执行 <---
-----------------> @6 <----------------

-----------------> @2 <----------------
name 
--->> fancy
-----------------> @2 <----------------

-----------------> @3 <----------------
name 
--->> fancydeepin
-----------------> @3 <----------------

-----------------> @4 <----------------
name 
--->> fancydeepin
-----------------> @4 <----------------

-----------------> @5 <----------------
mail 
--->> fancydeepin@yeah.net
-----------------> @5 <----------------



Z能更好的看出后台的输出是哪一行代码执行的l果Q我用了 @和数字来做了标记Q希望大家不要看晕了?^_^
最后针对输出结果简单说一下:
@1 说明Q静态(cd量、静态代码块Q属于类本nQ不依赖于类的实?br />@6 说明Q在创徏cȝ实例对象的时候,非静态代码块比构造器代码块更早的执行
@3 4 说明Q当cd量的值改变后Q再通过cLcȝ实例来访问类变量Q得到的是被改变后的?br />@5 说明Q非静态(实例变量、非静态代码块Q的C是相{的Q它们将按顺序被执行Q但会比构造器中的代码块更早的执行




kermart 2012-07-10 13:00 发表评论
]]>
վ֩ģ壺 | Ҷ| Ϫ| | | ũ| | ͨ| | | Ƽ| | ƽ| пѷ| | | ƽ| ʤ| | | | ɽ| ˳| | ұ| ͨ| | | Ϫ| ԭ| ̫| ݳ| | «| Ѯ| ͷ| | Ҷ| | | |