`

SWT GC重绘心得

阅读更多
如果有需求要将Composite的边框颜色改成红色,大家肯定就想到用GC了,先给Composite添加Apaint监听这里我将这种方法称之为一,然后再实现重绘的方法,或者是直接GC gc = new GC(Composite)然后直接画了,将这种方法称之为二,那么我现在就来说说方法二法有什么问题,大家也可以做实验,搞个composite 添加双击事件 双击之后改变机框,相信大家都知道怎么写,然后最小化界面,在打开,大家可以发现颜色没了,这就说明这个方法是临时性的,你要想永久存在,还是得用监听;好的,那么大家现在将方法二换成方法一试试:完全可以实现,那么在原有的基础上在加一个Composite调用同一个改变边框颜色的方法试试,大家就会发现了,双击了某一个,这个Composite的边框颜色确实是变了,但是在双击另一个的时候就没反应了,这是为什么呢?这就是监听的慢哇,那么究竟是什么原因造成这种问题的呢?其实大家仔细想想就知道了,addPaintListener顾名思义,就是添加paint监听,每双击一次就添加一次,这样就会出现那种情况了,那么怎么样保证只添加一次呢?那就是添加之前删除引用;下面就给大家说说我遇到的实际情况吧:项目需求中需要根据一些值决定Composite的边框颜色,所以只用现有的PaintListener接口是不行的,所以我写了个MyPaintListener extends PaintListener代码如下:
package com.netunit.workbench.listeners;

import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.GC;

public class MYPaintListener implements PaintListener {

	private Color color = null;
	
	public Color getColor() {
		return color;
	}

	public void setColor(Color color) {
		this.color = color;
	}

	@Override
	public void paintControl(PaintEvent e) {
		GC gc = e.gc;
		gc.setForeground(color);
		gc.drawRectangle(e.x, e.y, e.width - 1, e.height - 1);
		gc = null;
	}

}

MYPaintListener listener = new MYPaintListener();
		FlashGot.setBorderColorWithApaint(listener, container, color);

	/**
	 * 更改控件边框颜色
	 * 
	 * @param control
	 * @param color
	 */
	public static void setBorderColorWithApaint(MYPaintListener listener, Control control, final Color color) {
		
		control.removePaintListener(listener);
		listener.setColor(color);
		control.addPaintListener(listener);
		control.redraw();
	}

代码基本上就这样了,如果有写的不好的地方还请大家多多指出,毕竟本人接触插件开发不久
5
1
分享到:
评论
1 楼 caizhongda 2010-05-03  
gc.drawLine(180,10,220,150);

我画了一条线,可是我现在想把这条线删了。不晓得怎么做。还请指点一下。。谢谢。

相关推荐

    swt心得体会

    【SWT心得体会】 在Java图形用户界面开发中,SWT(Standard Widget Toolkit)是一个重要的库,它是Eclipse项目的一部分,提供了丰富的本地化图形组件。SWT的出现是对AWT(Abstract Window Toolkit)和Swing的补充,...

    SWT_2D绘图.doc

    在SWT(Standard Widget Toolkit)中,2D绘图主要依赖于Graphics Context(GC)以及相关的绘图操作。本文将详细介绍如何使用SWT进行2D绘图,包括在图像和控件上绘制图形,以及利用剪切(Clipping)功能实现特定的...

    SWT/RCP/GC画可移动矩形框

    用swt在shell上画一个矩形框,并且可以拖动矩形框,拖动的过程中自动擦除上一个矩形框。并且有动态拖动的效果。不影响背景图的显示。使用方法见类中注释

    SWT GC 五子棋

    public class FiveChess extends BaseWindow{ private Listener listener;... private GC gc; private int hot_i,hot_j; private boolean flag=true; /** * listener is use to action in draw

    java swt自定义控件

    尽量减少不必要的重绘,合理利用缓存,并确保在适当的地方调用`dispose()`方法释放资源。 总之,Java SWT自定义控件为开发者提供了创造独特用户界面的强大工具。通过理解控件的基本原理、绘图机制、事件处理和布局...

    swt总结draw2d绘图

    SWT(Standard Widget Toolkit)是Java中用于创建GUI应用程序的一个开源库,它是Eclipse IDE的基础。Draw2D是SWT中的一个子项目,专门用于在SWT组件上进行图形绘制,提供了一组丰富的API,使得开发者可以创建出复杂...

    swt学习心得

    swt入门小程序,详细讲解了做一个最简单的swt窗体程序的步骤和各步骤的结构和代码

    swt-64.rar_64位swt_64的SWT_SWT64_swt.jar 64位_swt64位

    标题“swt-64.rar_64位swt_64的SWT_SWT64_swt.jar 64位_swt64位”表明这个压缩包包含了适用于64位Windows操作系统的SWT库。描述中提到的“64位windows操作系统使用的SWT库”进一步确认了这一点。 SWT的设计目标是...

    swt table 实现换行

    根据提供的文件信息,可以看出本文主要讨论的是如何在 SWT (Standard Widget Toolkit) 的 Table 控件中实现文本换行的功能。SWT 是一个用于开发基于 Java 的桌面应用程序的工具包,它提供了丰富的用户界面组件来帮助...

    SWT源码 swt.jar

    SWT(Standard Widget Toolkit)是Eclipse项目的一个重要组成部分,它提供了一套用于构建图形用户界面(GUI)的API,与Java Swing不同,SWT基于操作系统原生的UI组件,因此能够实现更好的性能和与操作系统的集成。...

    swt 画图小程序 自由画线 矩形

    swt 画图小程序 自由画线 矩形。...import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.layout.GridData;

    SWT配置 SWT配置 SWT配置 SWT配置 SWT配置

    ### SWT配置详解 #### 一、SWT简介与配置的重要性 SWT(Standard Widget Toolkit)是一种用于构建基于Java的应用程序的图形用户界面工具包。它提供了丰富的控件集,并能够生成本地外观和感觉的界面,这使得应用在...

    org.eclipse.swt.win32

    org.eclipse.swt.graphics.GC.class org.eclipse.swt.graphics.GCData.class org.eclipse.swt.graphics.GlyphMetrics.class org.eclipse.swt.graphics.Image.class org.eclipse.swt.graphics.ImageData.class org....

    swt-api swt DOC

    【标题】"swt-api swt DOC" 指的是一个关于SWT(Standard Widget Toolkit)API的文档,主要用于Java GUI(图形用户界面)开发。这个文档可能是开发者们在使用SWT进行界面设计时的重要参考资料。 【描述】"java界面...

    swt教程 有关SWT怎么应用

    在本文中,我们将深入探讨SWT(Standard Widget Toolkit)的应用,以及如何在Java应用程序中使用它。SWT是由IBM公司为Eclipse集成开发环境设计的一种图形用户界面(GUI)工具包,它通过JNI(Java Native Interface)...

    SWT源代码 SWT Source code

    SWT(Standard Widget Toolkit)是Eclipse开源项目中的一部分,主要用于构建GUI(图形用户界面)应用程序。它提供了一组与操作系统紧密集成的图形控件,允许开发者创建原生外观的应用程序。SWT的设计目标是提高性能...

    Java swt完整教程

    - 图形绘制:利用GC对象在Canvas组件上进行自定义绘图。 8. SWT的最佳实践 - 模块化设计:利用RCP的插件体系,将功能划分为独立模块。 - 性能优化:避免不必要的组件刷新,合理使用布局管理器。 - 错误处理:...

    Java中如何使用Draw2D和SWT绘图

    在Java编程中,Draw2D库是一个强大的工具,它允许开发者使用SWT(Standard Widget Toolkit)来创建复杂的图形用户界面,特别适用于绘制图形和图表。Draw2D是Eclipse项目的一部分,它提供了一套丰富的API,可以方便地...

    SWT.zip 图形化

    10. **绘图与图像处理**:SWT的`GC`类提供低级别的绘图功能,包括绘制线条、形状、文本和位图,而`Image`类则用于加载和显示图像。 综上所述,SWT是一个强大的GUI工具包,结合JFace和其他Eclipse相关组件,为Java...

    swt.jar swt.jar swt.jar

    swt.jar swt.jar swt.jar swt.jar swt.jar

Global site tag (gtag.js) - Google Analytics