eclipse开发首选项

我们现在来开发一个 右键点击简体中文的资源文件然后生成繁体中文的文件

由于资源文件中的汉字是unicode格式的 我们用jdk自带的native2ascii来转换回汉字文件

汉字文件转换为繁体汉字文件后 最后又转成繁体unicode文件同时添加到项目中

由于我们不知道native2ascii 的位置 所以我们可以使用首选项来配置一次native2ascii的位置

以后就使用这个位置 有些人会说 我们可以这样获得

String exePath=System.getProperty("java.home")+"/bin/native2ascii.exe";

但是你要考虑到eclipse自带的jre中并没有这个exe文件

当然采用这种方法还有另外一种解决办法 就是将native2ascii.exe打包到jar包中然后拷贝的

jre的目录中 者也是一种好办法 这里先不讨论 研究首选项先

首先简体中文转 繁体中文 我们可以用枚举的方法解决,虽然有点恶心但是凑合着用

提供简体中文和繁体中文互转的方法

package lhplugin.utils;

public class SampleUtils {
 public static String SimpleStr() {
  return "啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二贰发罚筏伐乏阀法*藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸尽劲荆兢觉决诀绝均菌钧军君峻俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱*啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄选癣眩绚靴薛学*雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座";
 }

 // 繁体中文字
 public static String TraStr() {
  return "啊阿埃挨哎唉哀皚癌藹矮艾礙愛隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翺襖傲奧懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙壩霸罷爸白柏百擺佰敗拜稗斑班搬扳般頒板版扮拌伴瓣半辦絆邦幫梆榜膀綁棒磅蚌鎊傍謗苞胞包褒剝薄雹保堡飽寶抱報暴豹鮑爆杯碑悲卑北輩背貝鋇倍狽備憊焙被奔苯本笨崩繃甭泵蹦迸逼鼻比鄙筆彼碧蓖蔽畢斃毖幣庇痹閉敝弊必辟壁臂避陛鞭邊編貶扁便變卞辨辯辮遍標彪膘表鼈憋別癟彬斌瀕濱賓擯兵冰柄丙秉餅炳病並玻菠播撥缽波博勃搏鉑箔伯帛舶脖膊渤泊駁捕蔔哺補埠不布步簿部怖擦猜裁材才財睬踩采彩菜蔡餐參蠶殘慚慘燦蒼艙倉滄藏操糙槽曹草廁策側冊測層蹭插叉茬茶查碴搽察岔差詫拆柴豺攙摻蟬饞讒纏鏟産闡顫昌猖場嘗常長償腸廠敞暢唱倡超抄鈔朝嘲潮巢吵炒車扯撤掣徹澈郴臣辰塵晨忱沈陳趁襯撐稱城橙成呈乘程懲澄誠承逞騁秤吃癡持匙池遲弛馳恥齒侈尺赤翅斥熾充沖蟲崇寵抽酬疇躊稠愁籌仇綢瞅醜臭初出櫥廚躇鋤雛滁除楚礎儲矗搐觸處揣川穿椽傳船喘串瘡窗幢床闖創吹炊捶錘垂春椿醇唇淳純蠢戳綽疵茨磁雌辭慈瓷詞此刺賜次聰蔥囪匆從叢湊粗醋簇促躥篡竄摧崔催脆瘁粹淬翠村存寸磋撮搓措挫錯搭達答瘩打大呆歹傣戴帶殆代貸袋待逮怠耽擔丹單鄲撣膽旦氮但憚淡誕彈蛋當擋黨蕩檔刀搗蹈倒島禱導到稻悼道盜德得的蹬燈登等瞪凳鄧堤低滴迪敵笛狄滌翟嫡抵底地蒂第帝弟遞締顛掂滇碘點典靛墊電佃甸店惦奠澱殿碉叼雕凋刁掉吊釣調跌爹碟蝶叠諜疊丁盯叮釘頂鼎錠定訂丟東冬董懂動棟侗恫凍洞兜抖鬥陡豆逗痘都督毒犢獨讀堵睹賭杜鍍肚度渡妒端短鍛段斷緞堆兌隊對墩噸蹲敦頓囤鈍盾遁掇哆多奪垛躲朵跺舵剁惰墮蛾峨鵝俄額訛娥惡厄扼遏鄂餓恩而兒耳爾餌洱二貳發罰筏伐乏閥法琺藩帆番翻樊礬釩繁凡煩反返範販犯飯泛坊芳方肪房防妨仿訪紡放菲非啡飛肥匪誹吠肺廢沸費芬酚吩氛分紛墳焚汾粉奮份忿憤糞豐封楓蜂峰鋒風瘋烽逢馮縫諷奉鳳佛否夫敷膚孵扶拂輻幅氟符伏俘服浮涪福袱弗甫撫輔俯釜斧脯腑府腐赴副覆賦複傅付阜父腹負富訃附婦縛咐噶嘎該改概鈣蓋溉幹甘杆柑竿肝趕感稈敢贛岡剛鋼缸肛綱崗港杠篙臯高膏羔糕搞鎬稿告哥歌擱戈鴿胳疙割革葛格蛤閣隔鉻個各給根跟耕更庚羹埂耿梗工攻功恭龔供躬公宮弓鞏汞拱貢共鈎勾溝苟狗垢構購夠辜菇咕箍估沽孤姑鼓古蠱骨谷股故顧固雇刮瓜剮寡挂褂乖拐怪棺關官冠觀管館罐慣灌貫光廣逛瑰規圭矽歸龜閨軌鬼詭癸桂櫃跪貴劊輥滾棍鍋郭國果裹過哈骸孩海氦亥害駭酣憨邯韓含涵寒函喊罕翰撼捍旱憾悍焊汗漢夯杭航壕嚎豪毫郝好耗號浩呵喝荷菏核禾和何合盒貉閡河涸赫褐鶴賀嘿黑痕很狠恨哼亨橫衡恒轟哄烘虹鴻洪宏弘紅喉侯猴吼厚候後呼乎忽瑚壺葫胡蝴狐糊湖弧虎唬護互滬戶花嘩華猾滑畫劃化話槐徊懷淮壞歡環桓還緩換患喚瘓豢煥渙宦幻荒慌黃磺蝗簧皇凰惶煌晃幌恍謊灰揮輝徽恢蛔回毀悔慧卉惠晦賄穢會燴彙諱誨繪葷昏婚魂渾混豁活夥火獲或惑霍貨禍擊圾基機畸稽積箕肌饑迹激譏雞姬績緝吉極棘輯籍集及急疾汲即嫉級擠幾脊己薊技冀季伎祭劑悸濟寄寂計記既忌際繼紀嘉枷夾佳家加莢頰賈甲鉀假稼價架駕嫁殲監堅尖归g煎兼肩艱奸纠O檢柬堿鹼揀撿簡儉剪減薦檻鑒踐賤見鍵箭件健艦劍餞漸濺澗建僵姜將漿江疆蔣槳獎講匠醬降蕉椒礁焦膠交郊澆驕嬌嚼攪鉸矯僥腳狡角餃繳絞剿教酵轎較叫窖揭接皆稭街階截劫節莖睛晶鯨京驚精粳經井警景頸靜境敬鏡徑痙靖竟競淨炯窘揪究糾玖韭久灸九酒廄救舊臼舅咎就疚鞠拘狙疽居駒菊局咀矩舉沮聚拒據巨具距踞鋸俱句懼炬劇捐鵑娟倦眷卷絹撅攫抉掘倔爵桔傑捷睫竭潔結解姐戒藉芥界借介疥誡屆巾筋斤金今津襟緊錦僅謹進靳晉禁近燼浸盡勁荊兢覺決訣絕均菌鈞軍君峻俊竣浚郡駿喀咖卡咯開揩楷凱慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕顆科殼咳可渴克刻客課肯啃墾懇坑吭空恐孔控摳口扣寇枯哭窟苦酷庫褲誇垮挎跨胯塊筷儈快寬款匡筐狂框礦眶曠況虧盔巋窺葵奎魁傀饋愧潰坤昆捆困括擴廓闊垃拉喇蠟臘辣啦萊來賴藍婪欄攔籃闌蘭瀾讕攬覽懶纜爛濫琅榔狼廊郎朗浪撈勞牢老佬姥酪烙澇勒樂雷鐳蕾磊累儡壘擂肋類淚棱楞冷厘梨犁黎籬狸離漓理李裏鯉禮莉荔吏栗麗厲勵礫曆利傈例俐痢立粒瀝隸力璃哩倆聯蓮連鐮廉憐漣簾斂臉鏈戀煉練糧涼梁粱良兩輛量晾亮諒撩聊僚療燎寥遼潦了撂鐐廖料列裂烈劣獵琳林磷霖臨鄰鱗淋凜賃吝拎玲菱零齡鈴伶羚淩靈陵嶺領另令溜琉榴硫餾留劉瘤流柳六龍聾嚨籠窿隆壟攏隴樓婁摟簍漏陋蘆盧顱廬爐擄鹵虜魯麓碌露路賂鹿潞祿錄陸戮驢呂鋁侶旅履屢縷慮氯律率濾綠巒攣孿灤卵亂掠略掄輪倫侖淪綸論蘿螺羅邏鑼籮騾裸落洛駱絡媽麻瑪碼螞馬罵嘛嗎埋買麥賣邁脈瞞饅蠻滿蔓曼慢漫謾芒茫盲氓忙莽貓茅錨毛矛鉚卯茂冒帽貌貿麽玫枚梅酶黴煤沒眉媒鎂每美昧寐妹媚門悶們萌蒙檬盟錳猛夢孟眯醚靡糜迷謎彌米秘覓泌蜜密冪棉眠綿冕免勉娩緬面苗描瞄藐秒渺廟妙蔑滅民抿皿敏憫閩明螟鳴銘名命謬摸摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌謀牟某拇牡畝姆母墓暮幕募慕木目睦牧穆拿哪呐鈉那娜納氖乃奶耐奈南男難囊撓腦惱鬧淖呢餒內嫩能妮霓倪泥尼擬你匿膩逆溺蔫拈年碾攆撚念娘釀鳥尿捏聶孽齧鑷鎳涅您檸獰凝甯擰濘牛扭鈕紐膿濃農弄奴努怒女暖虐瘧挪懦糯諾哦歐鷗毆藕嘔偶漚啪趴爬帕怕琶拍排牌徘湃派攀潘盤磐盼畔判叛乓龐旁耪胖抛咆刨炮袍跑泡呸胚培裴賠陪配佩沛噴盆砰抨烹澎彭蓬棚硼篷膨朋鵬捧碰坯砒霹批披劈琵毗啤脾疲皮匹痞僻屁譬篇偏片騙飄漂瓢票撇瞥拼頻貧品聘乒坪蘋萍平憑瓶評屏坡潑頗婆破魄迫粕剖撲鋪仆莆葡菩蒲埔樸圃普浦譜曝瀑期欺棲戚妻七淒漆柒沏其棋奇歧畦崎臍齊旗祈祁騎起豈乞企啓契砌器氣迄棄汽泣訖掐洽牽扡釺鉛千遷簽仟謙乾黔錢鉗前潛遣淺譴塹嵌欠歉槍嗆腔羌牆薔強搶橇鍬敲悄橋瞧喬僑巧鞘撬翹峭俏竅切茄且怯竊欽侵親秦琴勤芹擒禽寢沁青輕氫傾卿清擎晴氰情頃請慶瓊窮秋丘邱球求囚酋泅趨區蛆曲軀屈驅渠取娶齲趣去圈顴權醛泉全痊拳犬券勸缺炔瘸卻鵲榷確雀裙群然燃冉染瓤壤攘嚷讓饒擾繞惹熱壬仁人忍韌任認刃妊紉扔仍日戎茸蓉榮融熔溶容絨冗揉柔肉茹蠕儒孺如辱乳汝入褥軟阮蕊瑞銳閏潤若弱撒灑薩腮鰓塞賽三三傘散桑嗓喪搔騷掃嫂瑟色澀森僧莎砂殺刹沙紗*啥煞篩曬珊苫杉山刪煽衫閃陝擅贍膳善汕扇繕墒傷商賞晌上尚裳梢捎稍燒芍勺韶少哨邵紹奢賒蛇舌舍赦攝射懾涉社設砷申呻伸身深娠紳神沈審嬸甚腎慎滲聲生甥牲升繩省盛剩勝聖師失獅施濕詩屍虱十石拾時什食蝕實識史矢使屎駛始式示士世柿事拭誓逝勢是嗜噬適仕侍釋飾氏市恃室視試收手首守壽授售受瘦獸蔬樞梳殊抒輸叔舒淑疏書贖孰熟薯暑曙署蜀黍鼠屬術述樹束戍豎墅庶數漱恕刷耍摔衰甩帥栓拴霜雙爽誰水睡稅吮瞬順舜說碩朔爍斯撕嘶思私司絲死肆寺嗣四伺似飼巳松聳慫頌送宋訟誦搜艘擻嗽蘇酥俗素速粟僳塑溯宿訴肅酸蒜算雖隋隨綏髓碎歲穗遂隧祟孫損筍蓑梭唆縮瑣索鎖所塌他它她塔獺撻蹋踏胎苔擡台泰酞太態汰坍攤貪癱灘壇檀痰潭譚談坦毯袒碳探歎炭湯塘搪堂棠膛唐糖倘躺淌趟燙掏濤滔縧萄桃逃淘陶討套特藤騰疼謄梯剔踢銻提題蹄啼體替嚏惕涕剃屜天添填田甜恬舔腆挑條迢眺跳貼鐵帖廳聽烴汀廷停亭庭挺艇通桐酮瞳同銅彤童桶捅筒統痛偷投頭透凸禿突圖徒途塗屠土吐兔湍團推頹腿蛻褪退吞屯臀拖托脫鴕陀馱駝橢妥拓唾挖哇蛙窪娃瓦襪歪外豌彎灣玩頑丸烷完碗挽晚皖惋宛婉萬腕汪王亡枉網往旺望忘妄威巍微危韋違桅圍唯惟爲濰維葦萎委偉僞尾緯未蔚味畏胃喂魏位渭謂尉慰衛瘟溫蚊文聞紋吻穩紊問嗡翁甕撾蝸渦窩我斡臥握沃巫嗚鎢烏汙誣屋無蕪梧吾吳毋武五捂午舞伍侮塢戊霧晤物勿務悟誤昔熙析西硒矽晰嘻吸錫犧稀息希悉膝夕惜熄烯溪汐犀檄襲席習媳喜銑洗系隙戲細瞎蝦匣霞轄暇峽俠狹下廈夏嚇掀鍁先仙鮮纖鹹賢銜舷閑涎弦嫌顯險現獻縣腺餡羨憲陷限線相廂鑲香箱襄湘鄉翔祥詳想響享項巷橡像向象蕭硝霄削哮囂銷消宵淆曉小孝校肖嘯笑效楔些歇蠍鞋協挾攜邪斜脅諧寫械卸蟹懈泄瀉謝屑薪芯鋅欣辛新忻心信釁星腥猩惺興刑型形邢行醒幸杏性姓兄凶胸匈洶雄熊休修羞朽嗅鏽秀袖繡墟戌需虛噓須徐許蓄酗敘旭序畜恤絮婿緒續軒喧宣懸旋玄選癬眩絢靴薛學*雪血勳熏循旬詢尋馴巡殉汛訓訊遜迅壓押鴉鴨呀丫芽牙蚜崖衙涯雅啞亞訝焉咽閹煙淹鹽嚴研蜒岩延言顔閻炎沿奄掩眼衍演豔堰燕厭硯雁唁彥焰宴諺驗殃央鴦秧楊揚佯瘍羊洋陽氧仰癢養樣漾邀腰妖瑤搖堯遙窯謠姚咬舀藥要耀椰噎耶爺野冶也頁掖業葉曳腋夜液一壹醫揖銥依伊衣頤夷遺移儀胰疑沂宜姨彜椅蟻倚已乙矣以藝抑易邑屹億役臆逸肄疫亦裔意毅憶義益溢詣議誼譯異翼翌繹茵蔭因殷音陰姻吟銀淫寅飲尹引隱印英櫻嬰鷹應纓瑩螢營熒蠅迎贏盈影穎硬映喲擁傭臃癰庸雍踴蛹詠泳湧永恿勇用幽優悠憂尤由郵鈾猶油遊酉有友右佑釉誘又幼迂淤于盂榆虞愚輿余俞逾魚愉渝漁隅予娛雨與嶼禹宇語羽玉域芋郁籲遇喻峪禦愈欲獄育譽浴寓裕預豫馭鴛淵冤元垣袁原援轅園員圓猿源緣遠苑願怨院曰約越躍鑰嶽粵月悅閱耘雲鄖勻隕允運蘊醞暈韻孕匝砸雜栽哉災宰載再在咱攢暫贊贓髒葬遭糟鑿藻棗早澡蚤躁噪造皂竈燥責擇則澤賊怎增憎曾贈紮喳渣劄軋鍘閘眨柵榨咋乍炸詐摘齋宅窄債寨瞻氈詹粘沾盞斬輾嶄展蘸棧占戰站湛綻樟章彰漳張掌漲杖丈帳賬仗脹瘴障招昭找沼趙照罩兆肇召遮折哲蟄轍者鍺蔗這浙珍斟真甄砧臻貞針偵枕疹診震振鎮陣蒸掙睜征猙爭怔整拯正政幀症鄭證芝枝支吱蜘知肢脂汁之織職直植殖執值侄址指止趾只旨紙志摯擲至致置幟峙制智秩稚質炙痔滯治窒中盅忠鍾衷終種腫重仲衆舟周州洲謅粥軸肘帚咒皺宙晝驟珠株蛛朱豬諸誅逐竹燭煮拄矚囑主著柱助蛀貯鑄築住注祝駐抓爪拽專磚轉撰賺篆樁莊裝妝撞壯狀椎錐追贅墜綴諄准捉拙卓桌琢茁酌啄著灼濁茲咨資姿滋淄孜紫仔籽滓子自漬字鬃棕蹤宗綜總縱鄒走奏揍租足卒族祖詛阻組鑽纂嘴醉最罪尊遵昨左佐柞做作坐座";
 }
 // 简体中文转繁体中文
 public static String TraToSimple(String text) {
  String str = "";
  for (int i = 0; i < text.length(); i++) {
   char tempchar = text.charAt(i);
   if (TraStr().indexOf(tempchar) >= 0) {
    str = str + SimpleStr().charAt(TraStr().indexOf(tempchar));
   } else
    str = str + tempchar;
  }
  return str;
 }

 // 繁体中文转简体中文
 public static String SimpleToTra(String text) {
  String str = "";
  for (int i = 0; i < text.length(); i++) {
   char tempchar = text.charAt(i);
   if (SimpleStr().indexOf(tempchar) >= 0) {
    str = str + TraStr().charAt(SimpleStr().indexOf(tempchar));
   } else
    str = str + tempchar;
  }
  return str;
 }
}

添加文件向导 拓展

<extension
         point="org.eclipse.ui.newWizards">
      <category
            name="LH语言互相转换工具"
            id="lhplugin">
      </category>
      <wizard
            name="LH简体转繁体"
            icon="icons/sample.gif"
            category="lhplugin"
            class="lhplugin.wizards.SampleNewWizard"
            id="lhplugin.wizards.SampleNewWizard">
      </wizard>

</extension>

添加控制类

package lhplugin.wizards;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;

import lhplugin.utils.SampleUtils;

import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.ui.INewWizard;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWizard;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;

/**
 * This is a sample new wizard. Its role is to create a new file resource in the
 * provided container. If the container resource (a folder or a project) is
 * selected in the workspace when the wizard is opened, it will accept it as the
 * target container. The wizard creates one file with the extension "mpe". If a
 * sample multi-page editor (also available as a template) is registered for the
 * same extension, it will be able to open it.
 */

public class SampleNewWizard extends Wizard implements INewWizard {
 private SampleNewWizardPage page;
 private ISelection selection;

 /**
  * Constructor for SampleNewWizard.
  */
 public SampleNewWizard() {
  super();
  setNeedsProgressMonitor(true);
 }

 /**
  * Adding the page to the wizard.
  */

 public void addPages() {
  page = new SampleNewWizardPage(selection);
  this.setWindowTitle("简体繁体互相转换 作者:小琼琼");
  addPage(page);
 }

 /**
  * This method is called when 'Finish' button is pressed in the wizard. We
  * will create an operation and run it using wizard as execution context.
  */
 public boolean performFinish() {
  final String fileName = page.getFilePath();
  final String binName = page.text.getText(); // page.getFileName();
  final boolean isTts = page.tts.getSelection();
  final IFile ifile=page.ifile;
  IRunnableWithProgress op = new IRunnableWithProgress() {
   public void run(IProgressMonitor monitor)
     throws InvocationTargetException {
    try {
     int type = 0;
     if (isTts)
      type = 1;
     else
      type = 0;
     doFinish(monitor, fileName, binName, type,ifile);
    } catch (Exception e) {
     throw new InvocationTargetException(e);
    } finally {
     monitor.done();
    }
   }
  };
  try {
   getContainer().run(true, false, op);
  } catch (InterruptedException e) {
   return false;
  } catch (InvocationTargetException e) {
   Throwable realException = e.getTargetException();
   MessageDialog.openError(getShell(), "Error", realException
     .getMessage());
   return false;
  }
  return true;
 }

 private void doFinish(IProgressMonitor monitor, String fileName,
   String binPath, int type,IFile ifile) {
  monitor.beginTask("开始创建繁体文件", 3);
  File pFile = new File(fileName);
  String dir = pFile.getParentFile().getAbsolutePath();
  String fileNameExcept = pFile.getName().substring(0,
    pFile.getName().indexOf("."));
  int index = 0;
  if (type == 0 && (index = fileNameExcept.indexOf("_zh_CN")) >= 0) {
   fileNameExcept = fileNameExcept.substring(0, index);
  }
  if (type == 1 && (index = fileNameExcept.indexOf("_zh_TW")) >= 0) {
   fileNameExcept = fileNameExcept.substring(0, index);
  }
  String tempFile = System.getProperty("java.io.tmpdir")
    + "temp.properties";
  String tempFile1 = System.getProperty("java.io.tmpdir")
    + "temp1.properties";

  String dstFile = null;
  if (type == 0)
   dstFile = dir + "/" + fileNameExcept + "_zh_TW.properties";
  else
   dstFile = dir + "/" + fileNameExcept + "_zh_CN.properties";
  File mFile = new File(dstFile);
  try {
   mFile.createNewFile();
   if (type == 0) {
    monitor.setTaskName("开始简体unicode转换简体原文");
   } else {
    monitor.setTaskName("开始繁体unicode转换繁体原文");
   }
   monitor.worked(1);
   Process p1 = Runtime.getRuntime().exec(
     binPath + " -reverse " + fileName + " " + tempFile);
   p1.waitFor();
   
   File tpFile = new File(tempFile1);
   if (tpFile.exists())
    tpFile.delete();
   tpFile.createNewFile();
   BufferedWriter writer = new BufferedWriter(
     new FileWriter(tempFile1));
   BufferedReader read = new BufferedReader(new FileReader(tempFile));
   String line = null;
   while ((line = read.readLine()) != null) {
    if (type == 0)
     line = SampleUtils.SimpleToTra(line);
    else
     line = SampleUtils.TraToSimple(line);
    writer.write(line);
    writer.newLine();
   }
   read.close();
   writer.close();
   if (type == 0)
    monitor.setTaskName("开始繁体转换unicode");
   else
    monitor.setTaskName("开始简体转换unicode");
   monitor.worked(1);

   Process p = Runtime.getRuntime().exec(
     binPath + " " + tempFile1 + " " + dstFile);
   p.waitFor();
   monitor.worked(1);
   tpFile.delete();
   new File(tempFile).delete();
   //第一个参数是 monitor走的步骤 意思当前文件的上一级强制刷新
   ifile.getParent().refreshLocal(1,monitor);
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

 }

 private void doFinish(String containerName, String fileName,
   IProgressMonitor monitor) throws CoreException {
  // create a sample file
  monitor.beginTask("Creating " + fileName, 2);
  IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
  IResource resource = root.findMember(new Path(containerName));
  if (!resource.exists() || !(resource instanceof IContainer)) {
   throwCoreException("Container /"" + containerName
     + "/" does not exist.");
  }
  IContainer container = (IContainer) resource;
  final IFile file = container.getFile(new Path(fileName));
  try {
   InputStream stream = openContentStream();
   if (file.exists()) {
    file.setContents(stream, true, true, monitor);
   } else {
    file.create(stream, true, monitor);
   }
   stream.close();
  } catch (IOException e) {
  }
  monitor.worked(1);
  monitor.setTaskName("Opening file for editing...");
  getShell().getDisplay().asyncExec(new Runnable() {
   public void run() {
    IWorkbenchPage page = PlatformUI.getWorkbench()
      .getActiveWorkbenchWindow().getActivePage();
    try {
     IDE.openEditor(page, file, true);
    } catch (PartInitException e) {
    }
   }
  });
  monitor.worked(1);
 }

 /**
  * We will initialize file contents with a sample text.
  */

 private InputStream openContentStream() {
  String contents = "This is the initial file contents for *.mpe file that should be word-sorted in the Preview page of the multi-page editor";
  return new ByteArrayInputStream(contents.getBytes());
 }

 private void throwCoreException(String message) throws CoreException {
  IStatus status = new Status(IStatus.ERROR, "lhplugin", IStatus.OK,
    message, null);
  throw new CoreException(status);
 }

 /**
  * We will accept the selection in the workbench to see if we can initialize
  * from it.
  *
  * @see IWorkbenchWizard#init(IWorkbench, IStructuredSelection)
  */
 public void init(IWorkbench workbench, IStructuredSelection selection) {
  this.selection = selection;
 }
}

添加向导页

package lhplugin.wizards;

import javax.swing.JFileChooser;

import lhplugin.Activator;
import lhplugin.utils.SampleUtils;

import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.jface.dialogs.IDialogPage;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;

/**
 * The "New" wizard page allows setting the container for the new file as well
 * as the file name. The page will only accept file name without the extension
 * OR with the extension that matches the expected one (mpe).
 */

public class SampleNewWizardPage extends WizardPage {
 private Text containerText;

 public Text text;

 private Text ptext;

 private ISelection selection;

 private String filePath;

 public Button stt;

 public Button tts;

 public String getFilePath() {
  return filePath;
 }

 public void setFilePath(String filePath) {
  this.filePath = filePath;
 }

 /**
  * Constructor for SampleNewWizardPage.
  *
  * @param pageName
  */
 public SampleNewWizardPage(ISelection selection) {
  super("简体转繁体向导页面");
  setTitle("简体转繁体");
  setDescription("LH产品提供商提供此工具,此插件那是相当的nb");
  this.selection = selection;
 }

 public void addSpaceGraid(Composite container, int length) {
  for (int i = 0; i < length; i++) {
   Label temp = new Label(container, SWT.NULL);
  }
 }

 /**
  * @see IDialogPage#createControl(Composite)
  */
 public void createControl(Composite parent) {
  Composite container = new Composite(parent, SWT.NULL);
  GridLayout layout = new GridLayout();
  container.setLayout(layout);
  layout.numColumns = 3;
  layout.verticalSpacing = 9;
  // 第一行 选择 简繁体互相转换
  Label tlable = new Label(container, SWT.NULL);
  tlable.setText("转换类型");
  stt = new Button(container, SWT.RADIO | SWT.LEFT);
  stt.setText("简体转繁体");
  stt.setSelection(true);
  GridData sttda = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
  stt.setLayoutData(sttda);
  GridData da = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
  da.horizontalSpan = 1;
  tts = new Button(container, SWT.RADIO | SWT.LEFT);
  tts.setText("繁体转简体");
  tts.setLayoutData(da);

  Label plable = new Label(container, SWT.NULL);
  plable.setText("资源文件");

  ptext = new Text(container, SWT.BORDER | SWT.SINGLE);
  GridData data1 = new GridData(GridData.FILL_HORIZONTAL);
  ptext.setLayoutData(data1);
  addSpaceGraid(container, 1);
  Label lable = new Label(container, SWT.NULL);
  lable.setText("请选择native2ascii位置");

  text = new Text(container, SWT.BORDER | SWT.SINGLE);
  GridData data = new GridData(GridData.FILL_HORIZONTAL);
  // Activator.getDefault().getDialogSettings() 在eclipse为关闭之前 一直存在的键值对
  // 可以用来
  // Activator.getDefault().getPreferenceStore()也可以实现以上功能不过 这个是用于记录首选项的键值对
  // 记录一些数据
  String initValue = null;
  //首先去获取首选项中的值
  initValue = Activator.getDefault().getPreferenceStore().getString(
    "globelExePath");
  //首选项中没有再去这里去
  if (initValue == null)
   initValue = Activator.getDefault().getDialogSettings().get(
     "exePath");
  if (initValue != null) {
   text.setText(initValue);
  } else
   text
     .setText("C://Program Files//Java//jdk1.5.0_06//bin//native2ascii.exe");
  text.setLayoutData(data);

  text.addModifyListener(new ModifyListener() {

   public void modifyText(ModifyEvent arg0) {
    // TODO Auto-generated method stub
    dialogChanged();
   }
  });
  Button warn = new Button(container, SWT.PUSH);
  warn.setText("选择文件");
  final FileDialog diag = new FileDialog(container.getShell(), SWT.OPEN);
  warn.addSelectionListener(new SelectionAdapter() {
   @Override
   public void widgetSelected(SelectionEvent ev) {
    diag.setFilterExtensions(new String[] { "*.exe" });
    text.setText(diag.open());
    Activator.getDefault().getDialogSettings().put("exePath",
      text.getText());
    // JFileChooser file = new JFileChooser();
    // if (file.showOpenDialog(null) == JFileChooser.FILES_ONLY) {
    // text.setText(file.getSelectedFile().getAbsolutePath());
    // }
   }
  });

  addSpaceGraid(container, 2);
  Button zh1 = new Button(container, SWT.PUSH | SWT.LEFT_TO_RIGHT);
  zh1.setText("清空");
  zh1.addSelectionListener(new SelectionAdapter() {
   public void widgetSelected(SelectionEvent ev) {
    text.setText("");
    ptext.setText("");
   }
  });
  addSpaceGraid(container, 3);
  Label tlable1 = new Label(container, SWT.NULL);
  tlable1.setText("简体中文字符");
  text11 = new Text(container, SWT.BORDER | SWT.SINGLE);
  GridData data11 = new GridData(GridData.FILL_HORIZONTAL);
  text11.setLayoutData(data11);
  text11.addFocusListener(new FocusListener() {

   public void focusGained(FocusEvent arg0) {
    // TODO Auto-generated method stub

   }

   public void focusLost(FocusEvent arg0) {
    // TODO Auto-generated method stub
    text22.setText(SampleUtils.SimpleToTra(text11.getText()));
   }

  });

  addSpaceGraid(container, 1);
  Label tlable2 = new Label(container, SWT.NULL);
  tlable2.setText("繁体中文字符");
  text22 = new Text(container, SWT.BORDER | SWT.SINGLE);
  GridData data22 = new GridData(GridData.FILL_HORIZONTAL);
  text22.setLayoutData(data22);
  text22.addFocusListener(new FocusListener() {

   public void focusGained(FocusEvent arg0) {
    // TODO Auto-generated method stub

   }

   public void focusLost(FocusEvent arg0) {
    // TODO Auto-generated method stub
    text11.setText(SampleUtils.TraToSimple(text22.getText()));
   }

  });
  addSpaceGraid(container, 1);
  addSpaceGraid(container, 2);
  Button zh = new Button(container, SWT.PUSH | SWT.LEFT_TO_RIGHT);
  zh.setText("转换");
  zh.addSelectionListener(new SelectionAdapter() {
   public void widgetSelected(SelectionEvent ev) {
    if (text11.getText().length() > text22.getText().length()) {
     text22.setText(SampleUtils.SimpleToTra(text11.getText()));
    } else {
     text11.setText(SampleUtils.TraToSimple(text22.getText()));
    }
   }
  });
  initialize();
  // dialogChanged();
  setControl(container);
 }

 boolean isCha = false;
 Text text11;
 Text text22;
 public IFile ifile;
 private void initialize() {
  if (selection != null && selection.isEmpty() == false
    && selection instanceof IStructuredSelection) {
   IStructuredSelection ssel = (IStructuredSelection) selection;
   if (ssel.size() > 1)
    return;
   Object obj = ssel.getFirstElement();
   if (obj instanceof IResource) {
    IFile container = null;
    if (obj instanceof IFile) {
     container = (IFile) obj;
     filePath = container.getLocationURI().getPath();
     ptext.setText(container.getName());
     if (filePath.indexOf(".properties") < 0) {
      updateStatus("请选择资源文件");
     } else {
      updateStatus(null);
      ifile=(IFile)obj;
     }
    } else {
     updateStatus("请选择资源文件");
    }
    // containerText.setText(container.getFullPath().toString());
   }
  }

 }

 /**
  * Ensures that both text fields are set.
  */

 private void dialogChanged() {
  if (text.getText().indexOf("native2ascii.exe") < 0)
   updateStatus("native2ascii.exe文件");
  else
   updateStatus(null);
 }

 private void updateStatus(String message) {
  setErrorMessage(message);
  setPageComplete(message == null);
 }

 public String getContainerName() {
  return containerText.getText();
 }

}

当然是先到这里已经可以使用了因为我提供了一个文本框供 用户自己选择一个native2ascii 我们不可能

人家用的时候每次都选择一个

initValue = Activator.getDefault().getDialogSettings().get(
     "exePath");

这个getDialogSettings 生命周期是eclipse开着的时候 下次开eclipse时候 里面的只会被清空掉

所以上面的代码可以解决一次开着eclipse native2ascii 值一直在的情况

每次开eclipse都需要重新设置 好麻烦啊  所以我们用首选项

首选项的值 存在 initValue = Activator.getDefault().getPreferenceStore().getString(
    "globelExePath");

他会一直存着直到插件被卸载掉

添加首选项的拓展

    <extension
         point="org.eclipse.ui.preferencePages">
      <page
            name="LH工具配置"
            class="lhplugin.preference.LhPreferencePage"
            id="lhplugin.preference.LhPreferencePage">
      </page>
   </extension>

   <extension
         point="org.eclipse.core.runtime.preferences">
      <initializer
            class="lhplugin.preference.PreferenceInitializer">
      </initializer>
   </extension>

   第二个拓展表示初始化的时候要设置哪些变量到 Activator.getDefault().getPreferenceStore()中

  首选项里面的的值都是对应到 Activator.getDefault().getPreferenceStore()的键值对

添加类

package lhplugin.preference;

import java.awt.TextField;

import lhplugin.Activator;

import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.FileFieldEditor;
import org.eclipse.jface.preference.StringFieldEditor;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;

public class LhPreferencePage extends FieldEditorPreferencePage implements
  IWorkbenchPreferencePage {
 public LhPreferencePage(){
  super(LhPreferencePage.GRID);
  setDescription("设置全局jdk资源文件编辑环境");
  setPreferenceStore(Activator.getDefault().getPreferenceStore());
 }
 @Override
 protected void createFieldEditors() {
  // TODO Auto-generated method stub
  FileFieldEditor file=new FileFieldEditor("globelExePath","请选择native2ascii位置",getFieldEditorParent());
  file.setFileExtensions(new String[]{"*.exe"});
  addField(file);
 }
 //点击ok的时候 当然还有其他一下方法 比如取消你可以自己去实现
 //点击ok后 store中的值就会自动被改成改后的值
 public boolean performOk() {
  // TODO Auto-generated method stub
  return super.performOk();
 }
 public void init(IWorkbench arg0) {
  // TODO Auto-generated method stub
  
 }

}

首选项所有的空间都是键值对存值的所以他有自己的一套控件

下面是控件列表:

l BooleanFieldEditor——布尔字段编辑器。
l IntegerFieldEditor——整数编辑器,可调用setValidRange来限制整数的范围。
l StringFieldEditor——文本编辑器,可以调用setEmptyStringAllowed来限制是否能为空。
l RadioGroupFieldEditor——单选按钮组编辑器。
l ColorFieldEditor——颜色编辑器。
l FontFieldEditor——字体编辑器。
l DirectoryFieldEditor——文件夹编辑器。
l FileFieldEditor——文件编辑器。
l ScaleFieldEditor——步进范围整数编辑器。

//初始化类

package lhplugin.preference;

import lhplugin.Activator;

import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
import org.eclipse.jface.preference.IPreferenceStore;

public class PreferenceInitializer extends AbstractPreferenceInitializer {

 @Override
 public void initializeDefaultPreferences() {
  // TODO Auto-generated method stub
  IPreferenceStore store=Activator.getDefault().getPreferenceStore();
  store.setDefault("globelExePath", "");
 }

}

原文地址:https://www.cnblogs.com/liaomin416100569/p/9331553.html