个人管理功能

在CSDN Blog撰写技术文章,即有机会入选CSDN技术中心,现在就去免费注册!已注册用户,点击登录

搜索
热门标签
专题历史

有人说SOA是一种IT策略,有人说SOA是一种架构理念,还有人说SOA是一种服务。SOA到底是什么?它将带来什么?软件产业的变革亦或是新的机遇下的挑战?业界权威专家带领我们一起去深究,去探索。BEA三位重量级专家与您共同探讨SOA

随着WPF/E更名为正式名称Silverlight,以及Silverlight 1.1 Alpha 版本的发布,答案变得清晰,而且令人兴奋! - 一个跨操作系统,跨浏览器的Web应用平台出现了。Silverlight 这样一个4.5MB的浏览器插件(1.1 Alpha文件)是如何做到的这些的?周岳: SilverLight-Web应用的一道强光

中国移动用户数量在大踏步地发展与增长,根据产业部的数据,仅三月就新增了670万户。预估计6月份之后,中国很快将迎来第五亿手机用户(平均不到3人拥有一台手机)而J2ME做为最重要的手机跨平台技术,凭借Java平台以其良好的开放性和支持能力,得到了众多手机厂商的支持。对众多开发者来说,J2ME程序易于移植,轻松实现“一次编写,到处运行”。J2ME系列开发专题,将带你从最基本的工具安装,环境配置开始,进入移动应用开发的世界。
 
CSDN移动开发系列之-“J2ME开发实训”

7月31日-8月1日,即将在上海召开甲骨文全球大会•亚太地区会议同期举行的甲骨文开发者大会,这是一项付费参加的面向开发人员的活动。在甲骨文开发者大会期间,您将听到世界一流的专家讲述如何使用Java、.NET、XML和PL/SQL以及Ajax、PHP、Spring、Groovy on Rails等流行技术来简化开发过程。在为期两天的甲骨文开发者大会中,您将能够提高自身的开发技能,扩充知识,参加几十场由专家主持的深入细致的技术讲座并在专家的辅导下进行上机操作、了解高级技能和获得详细指导。在甲骨文开发者大会期间,您有机会直接向业界一流的技术专家和开发人员请教。欢迎参加甲骨文全球大会·2007·亚太地区开发者大会

2007年6月29日,自由软件基金会宣布,其创始人Richard Stallman将在GNU的网站上,在本周太平洋时间星期五上午9点通过视频发布GPLv3。本来,GPL并不是所有开源组织所认可的协议。其从出现以来一直存在争议,GPL被认为是一种“病毒式”的协议,BSD的fans和老牌Unix黑客们认为,他们编写Unix的年头都比GPL声明要长得多,他们更愿意采用比GPL更加的自由的BSD协议。今天,开源社区中有70%左右的项目采用了GPL。很多在开源社区的老牌黑客们认为,Richard Stallman所鼓吹开源软件的言行与当年卡尔·马克思号召产业无产阶级反抗工作的努力如出一辙。在GPLv3的第三版修订案发布时,开源软件团体中的许多成员都反对这种协议。尤其是Linux的核心开发小组,其中29个高级架构师有28个反对这个协议。Linus Torvalds称这个协议有“宗教性质”,并公开反对。而整个软件行业特别是开源社区对GPLv3的争论也愈演愈烈。GPLv3:大教堂和集市的新一轮对抗

2007年7月14日由CSDN与ThoughtWorks联合主办的第二届“敏捷中国”技术大会在北京丽亭华苑酒店召开,多位开源社区和ThoughtWorks公司的技术领袖即将带来精彩的演讲。本次“敏捷中国”技术大会集中展现塑造敏捷企业所需的方方面面:业界领先的敏捷项目管理工具;极大提升软件开发效率的新语言和新框架;数据库领域的敏捷实践;全方位的敏捷项目管理指导;还有身临其境的亲身体验。来自开源社区和ThoughtWorks公司的技术领导者们将带领听众全面感受敏捷企业。“敏捷中国大会”现场直击

从2004年起,在每年的夏季,CSDN都会举办面向中国程序员的大型网上调查活动。这是中国样本最丰富的开发者社区调查,持续、全面和深入地反映了中国开发者社群自身状况、各项技术、工具、产品的使用状况和发展趋势,是完整、准确地了解中国开发者市场的重要参考资料。本次调查覆盖基础信息、.NET、Java、C/C++、Web开发、数据库应用开发、软件工程及项目管理、移动及嵌入式开发、开放源代码、企业信息化等10个领域。还有惊喜大奖等着你哦,赶快进入吧! 2007中国软件开发者大调查正式启动

推荐作者
  • 大宝大宝

    时间如流水,知惜方成功。

  • SkymanSkyman

    江苏人氏,梅兰芳之老乡。现游学渝州之最...

  • ralph623ralph623

新进作者
  • 冲 s冲 s

  • 小鱼小鱼

  • 棱角棱角

    多年J2EE构架设计与开发经验,专注于企业信息系统建设,精通Java设计模式,并能熟练的运用到企业开发中。 精通Struts与Spring框架。数据库方面精通Oracle数据库,从事过数据库方面的开发以及oracle优化方面的工作。

最新技术图书推荐
Eclipse插件开发系列7.TreeViewer的使用(2)一个更接近实际应用的例子

发表日期:2007-10-26
更新日期:2007-10-26
作者文章阅读次数:11857

源自:陈刚 (个人网站) 标签:java

您认为本文应该得        共有4人参与打分打印|收藏|讨论|投诉

*************************************************************************************
作者:陈刚,桂林人,97年毕业于广西师范大学数学系,一名热爱Java的普通程序员。
Email:?
glchengang@163.com
blog: glchengang.yeah.net
*************************************************************************************

上面的例子很简单,主要让大家明白几个关键Provider类的方法的使用。下面一个例子更接近于实际项目一些。这个例子有三个实体类:国家、城市、人,它们都实现了TreeEntry接口,这三个实体是有层级关系的。另外还写了一个工厂类来生成TreeViewer.setInput所需要的参数。

  这个例子比较长,为了大家阅读方便,在此说明一下:实体类可以看做JAVA类对数据库表的一个一一映射,类的属性就相当于表的一个字段。按照JAVA的通常规范写法实体类中每一个属性都附加了set/get方法,所以代码看起来很长,实际的内容却没多少,大家可以看看实体的UML图就应该对三个实体类的关系很清楚了。

/*
?* @author 陈刚 ,2004-8-21 18:25:18
?* Email: glchengang@yeah.net
?* Blog : glchengang.yeah.net
?*/
package book.c3.e2;
/**
?* 树的Entry的接口
?*/
public interface TreeEntry {

??? public String getName();

??? public void setName(String name);
}

?

/*
?* @author 陈刚 ,2004-8-21 15:32:15
?* Email: glchengang@yeah.net
?* Blog : glchengang.yeah.net
?*/
package book.c3.e2;

import java.util.List;

/**
?* 国家实体类
?*/
public class Country implements TreeEntry{

??? private String name; //国家名
??? private List cities; //此国家所包含的的城市的集合,集合元素为City对象

??? public Country() {}

??? public Country(String name) {
??????? this.name = name;
??? }

??? public String getName() {
??????? return name;
??? }

??? public void setName(String name) {
??????? this.name = name;
??? }

??? public List getCities() {
??????? return cities;
??? }

??? public void setCities(List cities) {
??????? this.cities = cities;
??? }
}

?

/*
?* @author 陈刚 ,2004-8-21 15:33:17
?* Email: glchengang@yeah.net
?* Blog : glchengang.yeah.net
?*/
package book.c3.e2;

import java.util.List;
/**
?* 城市的实体类
?*/
public class City implements TreeEntry{

??? private String name;//城市名
??? private List peoples;

??? public City() {}

??? public City(String name) {
??????? this.name = name;
??? }

??? public String getName() {
??????? return name;
??? }

??? public void setName(String name) {
??????? this.name = name;
??? }

??? public List getPeoples() {
??????? return peoples;
??? }

??? public void setPeoples(List peoples) {
??????? this.peoples = peoples;
??? }
}

?

/*
?* @author 陈刚 ,2004-8-21 18:15:53
?* Email: glchengang@yeah.net
?* Blog : glchengang.yeah.net
?*/
package book.c3.e2;
/**
?* 人的实体类
?*/
public class People implements TreeEntry{

??? private String name;

??? public People() {}

??? public People(String name) {
??????? this.name = name;
??? }

??? public String getName() {
??????? return name;
??? }

??? public void setName(String name) {
??????? this.name = name;
??? }
}

?

/*
?* @author 陈刚 ,2004-8-21 17:52:27
?* Email: glchengang@yeah.net
?* Blog : glchengang.yeah.net
?*/
package book.c3.e2;

import java.util.ArrayList;
import java.util.List;

/**
?* 此类负责生成TreeViewer的方法setInput所需要的参数
?*/
public class TvInputFactory {

??? public Object build() {
??????? /*
???????? * 生成顶级的三个对象
???????? */
??????? Country[] countryArray = new Country[3];
??????? countryArray[0] = new Country("中国");
??????? countryArray[1] = new Country("美国");
??????? countryArray[2] = new Country("英国");
??????? /*
???????? * 生成中国的三个城市
???????? */
??????? List chinaList = new ArrayList();
??????? chinaList.add(new City("北京"));
??????? City glCity = new City("桂林");
??????? chinaList.add(glCity);
??????? City nnCity = new City("南宁");
??????? chinaList.add(nnCity);
??????? countryArray[0].setCities(chinaList);
??????? /*
???????? * 生成美国的两个城市
???????? */
??????? List usaList = new ArrayList();
??????? usaList.add(new City("纽约"));
??????? usaList.add(new City("芝加哥"));
??????? countryArray[1].setCities(usaList);

??????? /*
???????? * 生成城市里的人
???????? */
??????? {
??????????? List list = new ArrayList();
??????????? list.add(new People("陈刚"));
??????????? list.add(new People("陈知行"));
??????????? list.add(new People("韩立新"));
??????????? glCity.setPeoples(list);
??????? }
??????? {
??????????? List list = new ArrayList();
??????????? list.add(new People("桃子"));
??????????? list.add(new People("林雅仕"));
??????????? list.add(new People("陈常恩"));
??????????? nnCity.setPeoples(list);
??????? }
??????? return countryArray;
??? }
}

?

?

/*
?* @author 陈刚 ,2004-8-21 0:54:20
?* Email: glchengang@yeah.net
?* Blog : glchengang.yeah.net
?*/
package book.c3.e2;

import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

import java.util.List;

public class S3_1 {

??? public static void main(String[] args) {
??????? S3_1 window = new S3_1();
??????? window.open();
??? }

??? public void open() {
??????? final Display display = new Display();
??????? final Shell shell = new Shell();
??????? shell.setLayout(new FillLayout());
??????? ui(shell);
??????? shell.open();
??????? while (!shell.isDisposed()) {
??????????? if (!display.readAndDispatch())
??????????????? display.sleep();
??????? }
??? }

??? private void ui(Shell shell) {
??????? Composite c = new Composite(shell, SWT.NONE);
??????? c.setLayout(new FillLayout());

??????? TreeViewer tv = new TreeViewer(c, SWT.BORDER);
??????? tv.setContentProvider(new MyContentProvider());
??????? tv.setLabelProvider(new MyLableProvider());
??????? tv.setInput(new TvInputFactory().build());//设置输入对象的方法与前面相同

??? }

??? /**
???? * 内容提供器。由它决定那些对象应该输出在TreeViewer里显示
???? */
??? private static final class MyContentProvider implements ITreeContentProvider {
??????? /**
???????? * 由这个方法决定树的顶级显示那些对象。在此方法里生成了三个Country对象
???????? * @param inputElement? 用tv.setInput()方法输入的那个对象,在这里没有使用这个对象
???????? */
??????? public Object[] getElements(Object inputElement) {
??????????? if (inputElement instanceof Country[])
??????????????? return (Country[]) inputElement;
??????????? return new Object[0]; //生成一个空数组
??????? }

??????? /**
???????? * 由这个方法决定结点应该显示那些子结点。在这里也不管父结点是什么,每个结点都统一有三个字结点
???????? * @param parentElement 被点击的结点(父结点)
???????? */
??????? public Object[] getChildren(Object parentElement) {
??????????? if (parentElement instanceof Country)
??????????????? return ((Country) parentElement).getCities().toArray();
??????????? else if (parentElement instanceof City)
??????????????? return ((City) parentElement).getPeoples().toArray();
??????????? return new Object[0];
??????? }

??????? /**
???????? * 判断某结点是否有子结点。在这里不管3721,全返回真,即都有子结点。这时结点前都有一个“+”号图标
???????? * @param element 需要判断是否有子的结点
???????? */
??????? public boolean hasChildren(Object element) {
??????????? //People没有结点,Country和City才可能有子结点
??????????? if (element instanceof People) {
??????????????? return false;
??????????? } else if (element instanceof Country) {
??????????????? List list = ((Country) element).getCities();
??????????????? //其子的集合不为空
??????????????? if (list != null && !list.isEmpty())
??????????????????? return true;
??????????? } else if (element instanceof City) {
??????????????? List list = ((City) element).getPeoples();
??????????????? if (list != null && !list.isEmpty())
??????????????????? return true;
??????????? }
??????????? return false;
??????? }

??????? public Object getParent(Object element) {
??????????? return null;
??????? }

??????? public void dispose() {}

??????? public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {}
??? }

??? /**
???? * 标签提供器。
???? */
??? private static final class MyLableProvider extends LabelProvider {
//??????? /**
//???????? * 显示什么图片
//???????? * @param 结点
//???????? * @return 可以为null值
//???????? */
//??????? public Image getImage(Object element) {
//??????????? //??????????? ISharedImages sharedImages = PlatformUI.getWorkbench().getSharedImages();
//??????????? //??????????? return sharedImages.getImage(ISharedImages.IMG_OBJS_WARN_TSK);
//??????????? return null;
//??????? }

??????? public String getText(Object element) {
??????????? if (element instanceof TreeEntry)
??????????????? return ((TreeEntry) element).getName();
??????????? return "";
??????? }
??? }
}

您认为本文应该得        共有4人参与打分打印|收藏|讨论|投诉

暂无图片

程序设计简洁明了才是最高境界

评论

CSDN技术中心团队官方Blog:http://blog.csdn.net/techcenter/,反馈邮箱:techcenter at csdn.net (注意:请把 at 换成@)


网站简介广告服务网站地图帮助联系方式诚聘英才English问题报告

北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号

世纪乐知(北京)网络技术有限公司 提供技术支持

Copyright © 2000-2008, CSDN.NET, All Rights Reserved