《从0开始写一个图形化构建工具》由会员分享,可在线阅读,更多相关《从0开始写一个图形化构建工具(16页珍藏版)》请在金锄头文库上搜索。
1、从0开始写一个图形化构建工具,黄承开 20110406,预备知识,一般我们选择Swing,什么是Swing? 控件类型和作用 布局的种类 如何组合控件和布局,兵马未动,粮草先行,需要实现什么功能,功能列表 根据功能选择一些合适的控件组合 控件的布局 最好有一个设计草图,工欲善其事必先利其器,WindowsBuilder Pro 专业级的所见即所得GUI设计工具 支持swing,swt和gwt 免费 支持eclipse 在线安装地址:,常见的布局组合,JFrame,JPanel1,JPanel2,JPanel3,JPanel.,控件1,控件2,控件3,控件4,控件5,控件6,控件.,范例-For
2、mLayout,基本1.文件操作,apache-common-io库 FileUtil能操作文件和文件夹的复制,移动,创建和删除;IOUtil提供了直接操作数据流的封装,以上能满足绝大多数的文件操作的需求 操作属性文件(Properties),存储和读取,注意编码问题 Zip/Jar的操作,基本2.图形操作,java-image-scaling库,提供了图形缩放基本功能,效率好,易用 基本的Graphics操作,裁剪图片,拼接,换色等 原始的BufferedImage和ImageIO的api使用,基本3.操作XML,dom4j库,提供了把xml作为一个dom操作的简便方法 添加,删除,修改任意
3、节点的属性 遍历和搜索节点的属性 更多:http:/o-,基本4.日志系统,log4j库 静态获取Logger实例,根据名称输出日志 静态或者动态配置输出格式和文件名 logger.addAppender(new FileAppender(new PatternLayout(%ddd-MM-yyyy, %dHH:mm:ss, %m %n ), this.outputDir + File.separator + this.packageName + _fail.log); 更多:,基本5.自定义控件,继承JComponenet 重写paintComponent(Graphics g)方法 如果需
4、要布局的话,重写getPrefferedSize()方法 如果要获取鼠标事件,实现MouseListener的接口,并且addMouseListener,常用代码1.打开文件选择框,String startDir = System.getProperty(user.dir); if (skinpath.getText().length() 0) startDir = skinpath.getText(); JFileChooser jfChooser = new JFileChooser(startDir); jfChooser.setDialogTitle(打开); jfChooser.se
5、tFileFilter(new FileFilter() public boolean accept(File f) if (f.isDirectory() return true; return false; public String getDescription() return 皮肤目录; ); jfChooser.setDialogType(JFileChooser.OPEN_DIALOG); jfChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); int result = jfChooser.showOpenDi
6、alog(null); if (result = JFileChooser.APPROVE_OPTION) / 确认打开 File fileIn = jfChooser.getSelectedFile(); if (fileIn.exists() skinpath.setText(fileIn.getAbsolutePath(); ,常用代码2.显示提示框,public void showDialoge(final String msg) new Thread() public void run() JOptionPane.showMessageDialog(null, msg);/msg为你要提示的内容信息 .start(); ,高级1.嵌入Ant进行构建,导入ant核心包 创建或者导入一个build.xml脚本 设置属性 运行脚本中的task,高级2.ASM修改bytecode,导入asm库 根据手册,用dom或者sax方式遍历class文件 找到目标opcode或者属性,修改之 重新write回class,谢谢,