`
文章列表
开源项目JHotDraw分析报告   (图片资源请参考附件)    一、JHotDraw项目的简要介绍 JHotDraw是一个基于LGPL协议的二维的GUI框架开源项目,是一个设计良好的(Well-Designed)框架,主要用于支持用
在我还没有写之前,竟然有网友向我要这篇文章,他说他看了2007、2008、2009 版的,想看2010版的,但一直未能看到,以为我“出事”了,呵呵,真是感谢感激感动之极,先不讲写得如何如何,无论多么地忙碌多么地扯蛋,我都下定一万个决心将这篇文章写了,否则觉睡不好饭吃不香总觉得欠下什么必须尽快还掉方觉舒坦,这或许是人老了的表现之一,记得大学时经常不做作业也没有过这样的反应,阿蒙确确实实是诚实地老了,但中国软件还是如此地娇嫩与幼稚,情不自禁感叹自已的无能与无为,比尔盖茨象我这把年纪时已如日中天,因此我已经能够清晰地看到了自已的明天以及更加遥远的未来,这是何等的悲哀! 关于“出事” 先来回答网友的 ...
  Java应用技巧——为JTabbedPane添加关闭按钮 收藏 JTabbedPane组件 很多人都为无法在JTabbedPane的标题上添加关闭按钮而苦恼。其实从Java SE 6开始,这个问题已经解决了,看下面这个例子: view plaincopy to clipboardprint? //文件名: tab.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; class tab extends JFr ...
原文地址:http://article.yeeyan.org/view/14599/4185   JHotDraw让你成为程序设计的毕加索  ——使用可高度定制化的GUI框架来简化图形应用程序的开发     软件开发人员总是希望能又快又好的进行应用软件的开发。而使用应用框架正是一种能在减少开发时间的同时又能提高软件质量的方法。应用框架被设计用于重用;它们能够提供预制的组件作为你所要开发的系统的构件,并提供设计模式作为系统架构的蓝图。     很多Java程序员都在频繁的使用某些框架,不过他们自己可能并没有意识到这一点。JFC Swing可以被看作是一种用于生成通用的GUI程序的简单框架 ...
[转]Java Swing中的键盘事件处理 在java Swing编程过程中,经常需要处理键盘事件,例如处理快捷键等。这里就介绍如何定义键盘事件,以及如何处理这些事件。   在jdk1.2中,分别针对Jcomponent和Text类的对象定制了不同的处理键盘 ...
最近做一个东西需要将JPanel的内容保存下来, 传统的办法是:   BufferedImage image = new BufferedImage(jpanel.getWidth(),jpanel.getHeight(), BufferedImage.TYPE_INT_RGB); Graphics2D g2 = image.createGraphics(); jpanel.paint(g2); // instead of just paint(g2); ImageIO.write(image, "jpeg", new java.io.File(&quo ...
 获取类的class文件的绝对路径 收藏     在java中,经常要定位某些文件的位置,为了能让程序与物理位置无关,就要使用相对路径。但java中使用相对路径总会遇到一些很麻烦的问题,就是到底相对于哪个参照物的问题。因为我们平时使用相对路径总是相对当前工作目录而言的,但有时需求并非如此。比如,要在一个开发包中使用相对路径,却不知道开发包被其他程序调用时的所在路径,而且特别是在web应用中,很难确定某个文件在整个应用中的相对路径。     所以使用相对路径最好的办法就是让路径相对的参照物是我的开发包或我的应用本身的东西,最好的就是用我开发包中的类的class文件。只要知道了某个class文件的 ...
    在C++中很容易实现控制应用程序只能运行一个进程实例,在C#中也很好实现,但在java中想要控制程序的实例数就是非常苦难的事情。究其原因,是因为C++和C#都是通过向windows注册表写数据来实现进程互斥,但java是跨平台的,不能用这种只能针对windows的方法来实现。     因为java中进程之间非常独立,很少有可以共享的东西,所以只有找到可以在进程间共享的东西,才能实现进程的互斥。有两种东西可以用来实现互斥。一是socket端口,一是文件锁。因为使用socket可能会存在端口被占用的问题,而且,占用网络端口这种本来就很紧俏的资源来实现互斥也是得不偿失的。所以我们这里用第二种 ...
JTextPane没有setLineWrap(boolean t);方法,StyledDocument控制着JTextPane中的显示,自动换行,当你把JTextPane设置成text/html格式,html语法将控制它的显示,这时换行将通过来实现,想要自动换行就需要用到表格,一个设置好宽度的表格可以使其中的文字自动折行,这完全和网页上的做法相同。   如果不想用表格, 还可以覆盖JTextPane的getScrollableTracksViewportWidth方法来实现.   public boolean getScrollableTracksViewportWidth() { ...
<!-- ========= END OF TOP NAVBAR ========= --> <!-- ======== START OF CLASS DATA ======== --> org.jhotdraw.app 接口 Application @NotNull public interface Application Application 用于控制View类的生命周期并提供一个窗口来显示View类. 一个application拥有一个ApplicationModel , ApplicationModel封装了关于应用程序 的信息(名称 ...
1.1  关键代码 绑定远程对象:   public static void main(String[] args) { try { // 8步 : 初始化---根---策略----子POA---伺服---激活---激活---监听 //初始化 org.omg.CORBA.ORB orb=org.omg.CORBA.ORB.init(args, null); //根 org.omg.PortableSe ...
实验目的, 内容 参见上篇文章:http://c-zhiwu.iteye.com/blog/720696 第1章 实验基本原理 实验基于CORBA程序开发的基本原理、基本过程,涉及IDL接口设计及其语言。服务端程序设计涉及POA 机制、POA 策略设计、伺服务对象激活器与定位器、适配器激活器的程序设计方法及应用特等。 1.1  功能实现截图 1.      启动服务端 修改bin/agenda/persistence/Labels.properties文件的server
  通过前文, 我们大概了解了JHotDraw的MVC架构.简单的, 试想如果要实现一个日记程序(Daily), 应该有如下步骤: 1. 定义模型(model): DialyModel. 该模型封装了程序的名称(daily), 版本(1.0), 版权(你); 2. 定义视图(view):DailyView. 该视图可以是一个JPanel, 里面包括一个填写日记内容的JTextPane, 两个用于保存和打开的按钮(仅仅是按钮, 并没有按钮按下的动作); 3. 定义控制类(controller): 定义用于保存和打开日记的控制方法. 4. 将视图添加到模型: 通过model.setV ...
3.2 MVC架构 这里只介绍JHotDraw框架的MVC模式. 关于MVC,扯开了三天三夜也说不完. 如MVC是什么, 为什么要用MVC, MVC的优点和缺点有哪些, 什么是改进的MVC等等等等, 这些问题你都可以Google一下,  这里只简单概述.    MVC发明于80年代,最早是运用在smalltalk上的. MVC试图将视图,控制器和模型分离,使之成为三个独立的部件以提高代码可复用率及可维护性.   视图:即肉眼看到的界面(官方的说法是:用户看到并与之交互的界面便为视图),视图只负责显示数据或其它可与用户交互的元件(按钮,菜单和链接等). 模型:模型是对现实数据和业务规 ...
RSS2.0英文规范:http://www.rssboard.org/rss-specification RSS2.0中文规范:什么是RSS?     RSS是一种网页内容联合格式(web content sydication format)。     它的名字是Really Simple Syndication的缩写。     RSS是XML的一种。所有的RSS文档都遵循XML 1.0规范,该规范发布在W3C网站上。          在一个RSS文档的开头是一个<rss>节点和一个规定的属性version,该属性规定了该文档将以RSS的哪个版本表示。如果该文档以这个规范来表示, ...
Global site tag (gtag.js) - Google Analytics