如果有需求要将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();
}
代码基本上就这样了,如果有写的不好的地方还请大家多多指出,毕竟本人接触插件开发不久
分享到:
相关推荐
【SWT心得体会】 在Java图形用户界面开发中,SWT(Standard Widget Toolkit)是一个重要的库,它是Eclipse项目的一部分,提供了丰富的本地化图形组件。SWT的出现是对AWT(Abstract Window Toolkit)和Swing的补充,...
在SWT(Standard Widget Toolkit)中,2D绘图主要依赖于Graphics Context(GC)以及相关的绘图操作。本文将详细介绍如何使用SWT进行2D绘图,包括在图像和控件上绘制图形,以及利用剪切(Clipping)功能实现特定的...
用swt在shell上画一个矩形框,并且可以拖动矩形框,拖动的过程中自动擦除上一个矩形框。并且有动态拖动的效果。不影响背景图的显示。使用方法见类中注释
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
尽量减少不必要的重绘,合理利用缓存,并确保在适当的地方调用`dispose()`方法释放资源。 总之,Java SWT自定义控件为开发者提供了创造独特用户界面的强大工具。通过理解控件的基本原理、绘图机制、事件处理和布局...
SWT(Standard Widget Toolkit)是Java中用于创建GUI应用程序的一个开源库,它是Eclipse IDE的基础。Draw2D是SWT中的一个子项目,专门用于在SWT组件上进行图形绘制,提供了一组丰富的API,使得开发者可以创建出复杂...
swt入门小程序,详细讲解了做一个最简单的swt窗体程序的步骤和各步骤的结构和代码
标题“swt-64.rar_64位swt_64的SWT_SWT64_swt.jar 64位_swt64位”表明这个压缩包包含了适用于64位Windows操作系统的SWT库。描述中提到的“64位windows操作系统使用的SWT库”进一步确认了这一点。 SWT的设计目标是...
根据提供的文件信息,可以看出本文主要讨论的是如何在 SWT (Standard Widget Toolkit) 的 Table 控件中实现文本换行的功能。SWT 是一个用于开发基于 Java 的桌面应用程序的工具包,它提供了丰富的用户界面组件来帮助...
SWT(Standard Widget Toolkit)是Eclipse项目的一个重要组成部分,它提供了一套用于构建图形用户界面(GUI)的API,与Java Swing不同,SWT基于操作系统原生的UI组件,因此能够实现更好的性能和与操作系统的集成。...
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(Standard Widget Toolkit)是一种用于构建基于Java的应用程序的图形用户界面工具包。它提供了丰富的控件集,并能够生成本地外观和感觉的界面,这使得应用在...
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(Standard Widget Toolkit)API的文档,主要用于Java GUI(图形用户界面)开发。这个文档可能是开发者们在使用SWT进行界面设计时的重要参考资料。 【描述】"java界面...
在本文中,我们将深入探讨SWT(Standard Widget Toolkit)的应用,以及如何在Java应用程序中使用它。SWT是由IBM公司为Eclipse集成开发环境设计的一种图形用户界面(GUI)工具包,它通过JNI(Java Native Interface)...
SWT(Standard Widget Toolkit)是Eclipse开源项目中的一部分,主要用于构建GUI(图形用户界面)应用程序。它提供了一组与操作系统紧密集成的图形控件,允许开发者创建原生外观的应用程序。SWT的设计目标是提高性能...
- 图形绘制:利用GC对象在Canvas组件上进行自定义绘图。 8. SWT的最佳实践 - 模块化设计:利用RCP的插件体系,将功能划分为独立模块。 - 性能优化:避免不必要的组件刷新,合理使用布局管理器。 - 错误处理:...
在Java编程中,Draw2D库是一个强大的工具,它允许开发者使用SWT(Standard Widget Toolkit)来创建复杂的图形用户界面,特别适用于绘制图形和图表。Draw2D是Eclipse项目的一部分,它提供了一套丰富的API,可以方便地...
10. **绘图与图像处理**:SWT的`GC`类提供低级别的绘图功能,包括绘制线条、形状、文本和位图,而`Image`类则用于加载和显示图像。 综上所述,SWT是一个强大的GUI工具包,结合JFace和其他Eclipse相关组件,为Java...
swt.jar swt.jar swt.jar swt.jar swt.jar