GWT/GXT
茜茜770
不积跬步,无以至千里;不积小流,无以成江海。
展开
-
log4j 多classloader重复加载配置问题解决
log4j:ERROR A "org.apache.log4j.xml.DOMConfigurator" object is not assignable to a "org.apache.log4j.spi.Configurator" variable.log4j:ERROR The class "org.apache.log4j.spi.Configurator" was loaded b转载 2015-01-14 18:03:54 · 4593 阅读 · 0 评论 -
GXT之旅:第七章:MVC——Navigation,Main和Item区域交互(2)
保持同步我们现在需要保证,当有新的feed添加的时候,feeds列表要正确的更新出来。同时,我们也需要保证,当用户选择了某个feed的tab的时候,相对应于feeds列表中的feed会同步的被选中。为了实现如上两个要求,我们要创建两个对应的events——一个feed被添加,一个feed tab被选中在AppEvents类里定义两个新的EventType——FeedAdded,原创 2012-04-17 16:06:53 · 1890 阅读 · 0 评论 -
GXT之旅:第七章:MVC——Status toolbar
一个AppEvent不仅仅可以被一个Controller所捕捉,它可以被多个Controller所捕捉,关键在于有多少个Controller注册了该AppEvent。下面我们要结合之前代码,新建一个新的StatusController,注册之前已有的Events,使用StatusToolbar component来给用户显示系统的运行状态。我们现在针对两个以后的事件:Feed se原创 2012-04-17 17:41:22 · 1790 阅读 · 0 评论 -
GXT之旅:第八章:Portal&Drag-Drop——项目使用Drag-Drop重构(2)
接着上节,我们按照同样的方式,允许用户可以拖动objects从FeedPortlet的ItemGrid移动到ItemPortlet里显示其内容。首先,RSSReaderConstants类,定义恒量——ITEM_DD_GROUP,用来作为drag-drop的grouppublic static final String ITEM_DD_GROUP = "itemDDGroup";原创 2012-04-26 17:53:30 · 1468 阅读 · 2 评论 -
GXT之旅:第八章:Portal&Drag-Drop——拖拽(Drag-Drop)基本介绍
Drag-Drop拖拽是GXt另外一个内建的有用的功能。正如GXT的其他功能一样,拖拽功能更接近桌面应用程序的特点。GXT的大多数components都支持拖拽功能,但是想要使用此功能,必须实现Draggable。DraggableDraggable类是用来给任何的components增加拖拽功能用的。使用起来很简单,比如我们像让一个Button是可被拖拽的,我们会有如下操作:原创 2012-04-24 17:27:01 · 2131 阅读 · 0 评论 -
GXT之旅:第八章:Portal&Drag-Drop——项目使用Drag-Drop重构(1)
Drag-Drop重构我们现在针对RSSReader项目,使用Drag-Drop的Portal布局效果。下面就开始使用GXT内建好的DragSource和DropTarget。首相,我们要做的是允许用户可以从NavPortlet中FeedList的里面拖拽一条feed,然后可以放置到FeedPortlet,接下来其feed的内容会自动的通过ItemGrid显示出来。RSSReade原创 2012-04-26 15:37:07 · 1556 阅读 · 0 评论 -
GXT之旅:第八章:Portal&Drag-Drop——项目使用Portal重构(3)
按照上一节的思路,我们来继续重构feed和item区域新建两个恒量,在RSSReaderConstants类里,加入两个新的恒量——FEED_PORTLET 和 ITEM_PORTLETpublic static final String FEED_PORTLET = "feedPortlet";public static final String ITEM_PORTLET原创 2012-04-23 15:49:27 · 1453 阅读 · 0 评论 -
GXT之旅:第七章:MVC——Navigation,Main和Item区域交互(1)
(刚干了一个多月的flex项目,一时半会还无法转过神来专注于GXT的东东,有好多东西自己都忘的差不多了。。。。我得好好屡屡)使用TabPanel显示feeds之前,我们已经通过RssMainPanel里的 ItemGrid来显示一个feed数据。现在,我们将要使用TabPanel去管理多个TabItem——其中每一个TabItem包含一个 ItemGrid,一个ItemGrid负责显示一个原创 2012-04-12 12:55:24 · 2842 阅读 · 4 评论 -
GXT之旅:第七章:MVC——MVC重构项目(4)
使用MVC重构RSSReader项目——Item区域之前,我们已经创建了两个非常类似的Controller和View,分别服务于NavPanel和FeedPanel。现在我们继续按照同样的思路来构建ItemPanel——ItemPanelReady(EventType),ItemController和ItemView。我们的目的是生成如下样式的应用效果:AppEvents原创 2012-03-22 11:41:34 · 2413 阅读 · 6 评论 -
GXT之旅:第七章:MVC——MVC重构项目(3)
使用MVC重构RSSReader项目——FeedPanel区域下面,按照同样的逻辑,去处理FeedPanel区域。在AppEvents类,定义一个新的EventType——FeedPanelReadypublic static final EventType FeedPanelReady = new EventType();在package:com.danielva原创 2012-03-19 15:51:55 · 2059 阅读 · 0 评论 -
GXT之旅:第七章:MVC——MVC重构项目(2)
使用MVC重构RSSReader项目——Navigation区域上一节,在程序的入口文件(RSSReader),我们派发了EventType为Init的AppEvent,AppController会处理此事件,将其转发到AppView。依次的,AppView会的处理该事件,去调用onInit方法,完成基础的UI创建。在此过程中负责了程序主体的区域创建。但是,唯一没有处理的,就是没有把组装好的c原创 2012-03-15 17:39:42 · 2086 阅读 · 1 评论 -
GXT之旅:第七章:MVC——MVC重构项目(1)
使用MVC重构RSSReader项目现在我们已经初步了解了GXT MVC,现在我们就要利用此契机,将RSSRead项目重构一下,使其应用于MVC架构——让components之间具有良好的一致性,而不是各自的分散开来。为了让Controller可以接收到events,需要使用Dispatcher将其注册。通常情况我们都会在程序入口类,来完成这一操作。那么我们就开动了~~~在co原创 2012-03-13 15:27:14 · 2510 阅读 · 0 评论 -
GXT之旅:第七章:MVC——标准的MVC与GXT MVC
第七章:Model View Controller本章我们要了解GXT的MVC架构,以及学习他们在一个大型的应用系统里是如何系统工作的我们会涉及到如下GXt功能集AppEventEventTypeControllerViewDispatcher一个好应用的需要当我们在使用GXT搭建一个应用的时候,我认为最重要的是要如何去搭建他。当我们项目在构建的时候,会很容原创 2012-03-08 17:16:59 · 2380 阅读 · 2 评论 -
GXT之旅:第六章:Templates(2)——XTemplate(2)
XTemplate应用于其他的components除了ComboBox和ListField之外,还有其他的一些components可以使用XTemplateRowExpanderListViewCheckBoxListViewColorPaletteRowExpander如果希望让Grid的某一列的展示具有一定的显示效果的话,我们就得使用RowExpander。RowExp原创 2012-03-06 14:33:48 · 3011 阅读 · 1 评论 -
GXT之旅:第八章:Portal&Drag-Drop——项目使用Drag-Drop重构(3)
Overview其实对于Portlet来说,他适合作为一个summary的显示效果。先前的章节里面,我们使用过FeedOverviewView来显示一个feed的summary信息。现在我们就要新建一个OverviewPortlet包含FeedOverviewView。新建OverviewPortlet:package com.danielvaughan.rssreader.cli原创 2012-05-07 14:24:54 · 1887 阅读 · 0 评论 -
GXT之旅:第八章:Portal&Drag-Drop——项目使用Portal重构(1)
目前,我们的RSSReader项目里,使用的是ContentPanel容器和BorderLayout布局效果。接下来,我们要做稍微的调整,将ContentPanel替换为Portlet,然后使用Portal去管理他们。Portlet是一个非常理想的components,用来构成独立的,不受他人影响的用户接口。不仅仅可以统一的被Portal管理,我们还可以使用MVC,让Portal响应每一个原创 2012-04-23 14:16:55 · 1571 阅读 · 0 评论 -
GXT之旅:项目源码下载
项目源码下载好久不研究GXT了。。。有很多人私信问我要源码,今天才贴上来,不好意思哦:eclipse导入,配置build path,就可以让项目跑起来了(由于GWT和GXT的jar包太大了,所以就删除了。相信大家会自动添加进来)http://download.csdn.net/detail/miqi770/8100911原创 2014-10-31 09:35:40 · 1891 阅读 · 2 评论 -
GXT之旅:第一章:初识ExtGWT(1)——简介
第一章:初识ExtGWT在本章中,我要介绍一下什么是ExtGWT, 并且解释说明她是如何和GWT(google)协同工作的。然后会告诉大家如何搭建第一个Ext GWT项目。概要:在Eclipse上搭建Ext GWT环境创建一个GWT项目在GWT项目里使用Ext GWT用Ext GWT的组件改写GWT实例程序到底GWT还缺少啥?做为java程序员,去开发富客户端的web程序是原创 2011-12-30 11:13:28 · 11334 阅读 · 9 评论 -
手动更新Eclipse的GWT plugin
国内TMD好像又给谷歌的plugin online更新链接给和谐了,试了两天了,从eclipse上无法自动更新GWT的eclipse plugin.今天还好找到官网竟然提供离线现在的zip。 一下是转自google 官网的:Installing the Google Plugin for Eclipse from a local update archive原创 2014-01-09 15:18:05 · 4120 阅读 · 6 评论 -
GXT之旅:第三章:表单和窗口(3)——表单
新建FeedForm先前窗口的工作已经完成了,下面要在窗口里加入表单。新建包:com.danielvaughan.rssreader.client.forms,在此包下新建FeedForm类,继承FormPanel。通过构造函数,设置隐藏题头public FeedForm(){setHeaderVisible(false);}定义表单中的Fields,就是先前提原创 2012-01-10 18:42:48 · 4347 阅读 · 6 评论 -
GXT之旅:第二章:GXT组件(2)——渲染和容器
异步渲染GWT的工作原理,就是操作DOM元素——Document Object Model来渲染浏览器中的html页面。GWT widget 其实就是由html标记集合组成的,可以在DOM中添加和删除。例如,一个GWT的button widget的html标记会被表述成,如下:<button type="button" class="gwt-Button" style="posit原创 2012-01-03 13:47:31 · 6521 阅读 · 3 评论 -
GXT之旅:第二章:GXT组件(3)——事件和监听
GXT基础3:EventsEvents 概念是指:当有事件发生时,通知应用程序作出响应的这一过程。点击button或者控件的状态改变,都可以当作一个事件,然后通过应用程序,使用户和程序之间产生某种互动的效果。用户在控件上的每一个行为,每一个操作,都会导致某些事件的触发,如果这个控件自身监听到了某些事件的发生,那么就会跳转到对应的处理流程中,以此作为事件的响应。从专业的角度来说,就像总所周知原创 2012-01-03 17:47:50 · 6862 阅读 · 4 评论 -
GXT之旅:第三章:表单和窗口(1)——POJO在client和server之间的共享
第三章:表单和窗口本章我们要学习GXT的表单功能。了解相关的表单components和如何使用他们。也会涉及到GXT Registry,来学习如何跨越各个components来传递对象的。本章,我们会涉及到如下GXt功能集The full range of fields available in GXTFormPanelFormLayoutWindowFitLayoutFi原创 2012-01-10 11:07:40 · 4155 阅读 · 4 评论 -
GXT之旅:第七章:MVC——GXT MVC的相关类
AppEvent classAppEvent负责承载着信息,在controller和view之间。每个AppEvent对象都会有一个专门的EventType定义。AppEvent对象可以随意的通过setData方法,承载一个或多个datas。这样很有益于传递状态信息。当设置多个Datas的时候,我们就需要使用key-value键值对,把每个Data命名,以方便检索。另外一个功能就是,可原创 2012-03-13 10:00:13 · 3085 阅读 · 2 评论 -
GXT之旅:第九章:Charts图表——各种Chart(4)
AreaChart classAreaChart extends LineChart ,因此工作方式都是相同的。不同之处是替换了单独的丝线,变成了线性区域。AreaChart germanyChartConfig = new AreaChart();germanyChartConfig.addValues(68376,72815,78169,78289,79433,82075);g原创 2012-05-24 12:04:14 · 2846 阅读 · 6 评论 -
GXT之旅:第九章:Charts图表——Chart的基本创建(1)
Chart class作为一个java类,Chart其实就是针对Open Flash Chart 库做了包装,并且让用户在使用起来就像其他的GXT的components一样。需要注意的是,在使用Chart的时候,需要给定一个open-flash-chart.swf的URL地址——上一节,我们拷入到RSSReader项目里面的地址。当然URL必须有效,否则Chart不会被渲染出来,除了控制室原创 2012-05-09 17:06:52 · 2701 阅读 · 0 评论 -
GXT之旅:第九章:Charts图表——各种Chart(3)
CylinderBarChart classBarChart chartConfig = new CylinderBarChart();chartConfig.addValues(6936,8628,41832,68376,296,10114,4693);FilledBarChart classFilledBarChart看起来和标准的BarChart没什么两样。但是她可原创 2012-05-14 17:32:03 · 3708 阅读 · 0 评论 -
GXT之旅:第九章:Charts图表——BarChart(2)
ChartModel classchartModel extends BaseModel,为 "Open Flash Chart" chart 的数据源所用。ChartModuel 用来定义类型和数据,他会包含一个or多个ChartConfig对象用来定义各种类型的Chart。ChartConfig classChartConfig extends BaseModel 但是一个原创 2012-05-11 14:09:54 · 2186 阅读 · 0 评论 -
GXT之旅:第九章:Charts图表——准备工作
第九章:Charts本章我们要了解GXT的Chart功能。我们会全面了解Chart。为了消除对Chart功能的疑惑,我们会使用真实的数据展示Chart。我们会涉及到如下GXt功能集ChartChartModelChartConfigBarChartCylinderBarChartFilledBarChartSketchBarChartHorizont原创 2012-05-09 14:37:08 · 2519 阅读 · 1 评论 -
GXT之旅:第八章:Portal&Drag-Drop——Portal的基本介绍
第八章:Portal&Drag-Drop本章我们要了解GXT的Portal&Drag-Drop功能。我们会首先学习如何使用Portal(非常类似谷歌的iGoogle功能)布局和Portlet,然后再以实践的方式学习GXT的拖拽功能。我们会涉及到如下GXt功能集PortalPortletDraggableDragSourceGridDropTargetLi原创 2012-04-23 12:03:20 · 2268 阅读 · 0 评论 -
GXT之旅:第八章:Portal&Drag-Drop——项目使用Portal重构(2)
实际上,Portlet components并不是那么复杂,大多数的工作,我们在上一节都完成了,Portlet其实只是一个包装。新建包:com.danielvaughan.rssreader.client.portlets。在此包下,新建类NavPortlet extends Portlet(负责左侧导航区域)package com.danielvaughan.rssreader.原创 2012-04-23 15:05:39 · 1555 阅读 · 0 评论 -
GXT之旅:第六章:Templates(2)——XTemplate(1)
XTemplateXTemplate比Template更为有用,除了拥有Template相同的功能之外,还具有更多有用的功能——提供使用更多的标记来满足自己需要的html显示效果。为了下面例子的引用,首先,定义一个Person的ModalDatapublic class Person extends BaseModel {public Person(String firstNam原创 2012-02-23 09:57:54 · 2131 阅读 · 0 评论 -
GXT之旅:第六章:Templates(1)——Template(2)
Template通过使用Template类,可以定义一组html的字符串去渲染ModelData或者Params。其生成的html 字符串里面可以设置占位符,要来作为变量可以设置参数。一个占位符参数的定义,需要通过{}给包裹起来。一个使用firstName和lastName定义的Template如下:Template template = new Template("My full原创 2012-02-09 16:29:46 · 2501 阅读 · 0 评论 -
GXT之旅:第三章:表单和窗口(5)——Registry
RegistryGXT提供一个Registry类。他就像HashMap,可以在应用程序的client端内随意使用它。他就像一个载体,穿梭在client端的任何类之间,用于传递数据。Registry存储servicesRegistry就是用来存储数据的。数据可以是多种多样的,除了基本的list之外,他可以存储services——当services被创建的时候,就被放入Regi原创 2012-01-11 11:57:12 · 3922 阅读 · 0 评论 -
GXT之旅:第三章:表单和窗口(4)——表单的提交和RPC
表单使用HTTP提交表单有两种提交方式,第一种就是传统的HTTP提交。最直接的步骤就是:使用FormPanel的setAction()方法,去定义submit的URL使用FormPanel的isValid()方法,去验证所有的fields是否有正确如果正确,使用FormPanel的submit()方法提交表单。setAction("http://www.example.co原创 2012-01-11 10:53:11 · 5496 阅读 · 2 评论 -
GXT之旅:第三章:表单和窗口(6)——表单提交的后续
创建RSS XML接下来,要把用户录入的feed内容保存起来。最合适的方式是,保存为RSS XML格式的文档。所以要在FeedService接口中新增一个方法saveFeed()方法。我们需要使用JDOM 1.1库,操作feed对象,将其转换成XML格式。http://www.jdom.org/downloads/index.html下载jdom-1.1.2.jar包,放入工作空间里。原创 2012-01-11 14:43:30 · 3705 阅读 · 4 评论 -
GXT之旅:第二章:GXT组件(8)——Popup
PopupPopup继承自LayoutContainer,可以使其弹出的窗口,始终至于其他的components之上。现在,我想要在用户点击Link feed按钮的时候可以显示一个Popup表单窗口,可以让用户输入一个URL。创建新package:com.danielvaughan.rssreader.client.components。在此包下创建LinkFeedPopup类,继承自原创 2012-01-06 11:51:57 · 4487 阅读 · 1 评论 -
GXT之旅:第二章:GXT组件(7)——Button和Tooltip
ToggleButtonButton控件对于大家来说并不陌生,也就不专门介绍了。下面要特殊的介绍一下ToggleButton。他是Button的子类,他就像一个开关,有“按下”和“未按下”两种状态。同时呢,我们可以给ToggleButton进行分组,使用setToggleGroup(String toggleGroup)就可以实现。分组后的ToggleButton不管如何点击其中某个按钮,都会原创 2012-01-05 18:02:57 · 4764 阅读 · 6 评论 -
GXT之旅:第二章:GXT组件(5)——加载消息
加载消息构建任何一种GUI(graphic user interface图形用户界面),最重要的一点就是一定要让用户知道此时此刻应用程序正在做什么。GWT,尤其是GXT应用程序,会在javaScript和图片加载时候,占用几秒钟。因此,在这一期间,就需要显示一个等待加载的一个消息界面。大致思路:当浏览器通过url找到此应用程序的时候,也就是JavaScript还没有被加载的时候,我们要在应原创 2012-01-05 10:42:43 · 4762 阅读 · 4 评论 -
GXT之旅:第二章:GXT组件(4)——容器的布局
ViewportViewport的父类是LayoutContainer,它会自动的填充整个浏览器的窗口,并且会监听窗口的大小变化,随之变化。于此同时,也会负责处理其里面的子components在新改变窗口后的大小。对于去展现一个类似于桌面应用程序来说,Viewport是一个非常有用的component。我们会使用Viewport,作为整个项目的基础面板。因此,它会被直接的添加到GWT的ro原创 2012-01-04 17:38:20 · 8555 阅读 · 9 评论