Archive for the Java Category

模型-视图-呈现器(MVP)

网上有人问MVP设计模式,不是最有价值球员,是Web开发中的一种名词,有很多人介绍这种设计模式,但没有给出中文的说法,这里的P是一个中间人的角色,本人不才杜撰了一个名词:呈现器,MVP也就成了模型-视图-呈现器设计模式,下面是stackoverflow上某人对MVP的解释,虽然说的是Web开发,但对于其他应用也有价值,故这里翻译如下:

原文:http://stackoverflow.com/questions/2056/what-are-mvp-and-mvc-and-what-is-the-difference
翻译:sam sha – ycoder.com

Model-View-Presenter – 模型-视图-呈现器

在MVP中,呈现器包含视图的UI业务逻辑,所有视图的调用直接委托给呈现器,呈现器使用接口与视图对话,避免了与视图的直接耦合,这意味着可以模拟视图组件进行单元测试。MVP中有一个特点,它存在很多个双向派发,比如,当点击“保存”按钮,事件委托呈现器“OnSave”方法,当完成保存,呈现器将通过接口回调视图,这样这个视图可以显示保存已完成。

MVP倾向于一种非常自然的模式实现Web Forms呈现的分离,原因是视图总是被ASP.NET运行器最先创建,你可以找到更多关于两者的资料

关于WeakHashMap

对DataBox作同步操作,需要加锁,每个DataBox对应一把锁,当然你可以new一个TDataBox 再new 一个Locker,但为了简便,我准备用一个全局的Map管理box,locker集合,自动为内存中的每一个dataBox匹配一个locker。这种情况如果使用普通的hashMap会有问题(box在map中被引用,即使这个box不被其他对象引用,内存也释放不了),使用WeakHashMap可以解决这个问题

JPopupMenu in table cell editor会出现table失去焦点,触发stop cell editing,removeEditor

JPopupMenu in table cell editor

参考:http://www.jroller.com/santhosh/entry/multiline_in_table_cell_editing1

TextArea获得焦点时,table失去焦点,会触发stop cell editing,removeEditor…界面变成

通过重写JTable的public void removeEditor()方法可以避免
//TPropertySheet instanceof JTable
        TPropertySheet sheet = new TPropertySheet(box) {
            public void removeEditor() {
                TableCellEditor editor = getCellEditor();


                if (editor != null && editor instanceof
PopupMenuEditor) {


                    PopupMenuEditor popupMenuEditor =
((PopupMenuEditor) editor);


                    if (popupMenuEditor.isBodyVisible()) {


                        return;


                    }


                }


                super.removeEditor();


            }


        };



http://cid-24183f266c78caa8.skydrive.live.com/embedrowdetail.aspx/Code/PopupMenuEditor.zip

基于Java的图片混合模式的实现

图像处理算法自己实现也不是那么难,偶然在某网站上看到photoshop中相关滤镜的简单算法,就是些对像素的加加减减(http:

//bbs.cn365design.com/viewthread.php?tid=8483),下面是参考文章,后来我将参照原文用java实现这些算法,并实现下面的图片渲染效果

几种最基本的图层混合模式:7 U8 ]) I. N5

Dxf文件格式以及使用kabeja解析Dxf文件(1)

Dxf文件格式
http://en.wikipedia.org/wiki/Dxf
http://www.autodesk.com/techpubs/autocad/acadr14/dxf/dxf_group_codes.htm

没想到dxf是文本格式
其结构如下

  • HEADER section – General information about the drawing.
    Each parameter has a variable name and an associated value.
  • CLASSES section – Holds the information for
    application-defined classes whose instances appear in the BLOCKS,
    ENTITIES, and OBJECTS sections of the database. Generally does not
    provide sufficient information to allow interoperability with other
    programs.
  • TABLES section – This section contains definitions of
    named items.

Java绑定资源

private static final String BUNDLE_NAME =
"org.kabeja.ui.impl.messages";
//对应org.kabeja.ui.impl.messages.properties 文件
private static final ResourceBundle RESOURCE_BUNDLE =
ResourceBundle.getBundle(BUNDLE_NAME);

eclipse中可以直接按ctrl链接查看