当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: 申明:本系列文章中的大多数代码和部分文字来源于网络,版权归其所有人所有。
 

 

 ·为什么一定要装xp sp2?    »显示摘要«
    摘要: 现在网络上充斥着大量关于如何升级到windows xp sp2的信息, 它们不断重复着进行升级的必要性,诸如安全啦, 保护啦, 更新的技术啦, 等等等... 而我即觉得没什么必要升级到xp的sp2上, 如果用户是一名从事it方面工作人员的话, 反而没什么必要一定要进行升级. 我最想说的是sp2带的那个最新的内存代码验证技术, 我认为这会降低系统整体的运行速度, 因为每次在执行新应用程序的时候......
    摘要:selecting a lob column into a long buffer using a simple fetch the following example illustrates selecting a lob column using a simple fetch:void simple_fetch(){ word i, buf1 = 0; word retval; text b......


设计模式学习笔记(4)

申明:本系列文章中的大多数代码与部分文字来源于网络,版权归其所有人所有.

14.facade 【程序编程相关:[原创]打破Java异常处理规则

13.decorator 【推荐阅读:[原创]Linux下进行Java开发的一

16.observer 【扩展信息:[原创]过滤器的应用

15.iterator

17.template method

13.decorator

说明:我开始看这个模式的时候,看了好几遍c#代码描述的装饰模式,也许是我功力不行也许是代码过于简单(不是看不懂代码),我怎么也想不通它的好处.直到看了下面这个java的例子才转过弯来.这是一种对子类化(这里指派生子类)的补充功能,在c#中用的是接口实现的,简言之,就是在不合适子类化的时候用下面的这种方法实现子类功能的扩展.c#的例子我就不给出了,大家仔细看这个java的代码应该更容易理解.

实例:

java程序员知道可以通过扩展一个类来改变类的行为与扩展一个类的功能.这个行为被称为继承,它是面向对象编程的一个重要的特性.

举例来说,如果你想得到一个带有边框的swing类型标签,你可以子类化javax.swing.jlabel类.然而,子类化并不总是有效.当继承不能解决问题的时候,你不得不求助与其它的方式.比如,使用decorator模式.

这篇文章解释了decorator模式是什么,并说明什么时候应该子类化,什么时候应该采用decorate模式.

在java语言中关键字extends被提供来子类化(扩展)一个类.具有丰富的面向对象编程经验的程序员知道子类化的威力.通过扩展一个类,我们能够改变这个类的行为.以列表1所讲的jborderlabel类为例,它扩展了javax.swing.jlabel类,除了多了一个边框,它与jlabel类具有相同的外观与行为.

列表 1 -- the jborderlabel class, an example of subclassing

package decorator;

import java.awt.graphics;

import javax.swing.jlabel;

import javax.swing.icon;

public class jborderlabel extends jlabel {

  public jborderlabel() {

   super();

  }

   public jborderlabel(string text) {

   super(text);

   }

   public jborderlabel(icon image) {

   super(image);

   }

 public jborderlabel(string text, icon image, int horizontalalignment) {

 super(text, image, horizontalalignment);

   }

 public jborderlabel(string text, int horizontalalignment) {

 super(text, horizontalalignment);

   }

 protected void paintcomponent(graphics g) {

  super.paintcomponent(g);

  int height = this.getheight();

      int width = this.getwidth();

      g.drawrect(0, 0, width - 1, height - 1);

   }

}

要理解jborderlabel如何工作,我们首先要了解swing绘它的组件的原理. jlabel类同其它的swing组件一样,继承至javax.swing.jcomponent.swing.它们都是通过调用jcomponent组件的paint方法来画界面.我们可以通过重载jcomponent的公开方法paint来修改一个组件画界面的行为.下面是一个jcomponent的paint方法的定义.

public void paint(graphicsg)

作为paint方法的参数传进来的对象graphics是一个绘图面板.为了优化绘图这个操作,paint方法被分割成三个具有保护(protected)属性的方法:paintcomponent, paintborder, paintchildren.paint方法调用这三个方法同时将它接受到的graphics实例传递给这三个方法.下面是这三个函数的一个声明:


...   下一页
    摘要:这是在 ruadhan 提供的源代码基础上做了一些修改,可以检测图像中的角点。应用环境是:opencv beta 4,vc6 编译运行通过。 ==========#include <stdio.h>#include "cv.h"#include "highgui.h"#define max_corners 100 int main( int ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE