SWT/JFace
cuser_online
致力于软件开发。
展开
-
SWT Table:获取表格所选中单元格所在行和列
以前公司同事问到这个问题,顺便看了一下API,在这里记一笔。eg:final TableCursor cursor = new TableCursor(table, SWT.NONE);cursor.addMouseListener(new MouseAdapter() {public void mouseDown(MouseEvent e) {int row =原创 2013-01-14 11:23:42 · 4761 阅读 · 0 评论 -
Region: 区域相差
<br />Region: 区域相差<br />void subtract(Rectangle rectangle) : 区域相减<br />其它重载方法还有<br />subtract(Region region) <br />subtract(int[] pointArray)<br /><br />需要说明的是:在使用GC进行剪切操作时,做完绘图操作后,最好恢复原有GC范围和大小。不然下一次绘图仍是在剪切范围内进行。<br />方法:<br />在设置剪切区域(setClipping)前,先将GC原创 2011-03-27 21:06:00 · 571 阅读 · 0 评论 -
SWT之Rectangle类
<br />contains(Point pt):点是否在矩形区域内<br />public void intersect(Rectangle rect) : 求交集区域<br />eg:<br />rect.intersect(rect2)。 rect的的区域为交集区域<br />public Rectangle intersection (Rectangle rect) :返回交集区域<br />eg:<br />Rectangle rect3 = rect.intersection(rect2)<b原创 2011-03-24 23:07:00 · 1053 阅读 · 0 评论 -
GC绘图:使用setRegion改变swt原生Text的外观为圆角
<br />首选需要将要改变外观的Text的样式设置为SWT.NONE,若设置为SWT.BORDER,则显示比较怪。<br />但设置为SWT.NONE时Text没有Border了。显示也比较怪,边界显示的是灰白色。放在背景色比较淡的容器中,几乎看不到Text的边界和范围。<br />有一种折衷的解决办法,就是在放置Text的容器上为Text模拟绘制一个边界。<br />eg:<br />text.addPaintListener(new PaintListener(){<br />原创 2011-03-23 21:32:00 · 1966 阅读 · 0 评论 -
GC绘图:使用setRengion改变控件的外观为圆角
<br />为相应的控件添加SWT.Paint事件。<br />eg:<br />btnCommit.addPaintListener(new PaintListener(){<br /> public void paintControl(PaintEvent e){<br /> Rectangle recttmp = btnCommit.getBounds();<br /> Point size = new Point(recttmp.width,recttmp.height);<br /原创 2011-03-23 21:29:00 · 517 阅读 · 0 评论 -
GC绘图:填充Region(不规则区域)及填充为渐变色
<br />填充Region区域<br /><br />static void fillRegion(GC gc, Region region)<br /> {<br /> // NOTE: region passed in to this function will be modified<br /> Region clipping = new Region();<br /> gc.getClipping(clipping);<br /> re原创 2011-03-24 23:10:00 · 1432 阅读 · 1 评论 -
GC绘图:绘制透明文本
<br />gc.drawString(String text,int x,int y,boolean isTransparent)<br />最后一个参数isTransparent为true时,绘制透明文本。<br />绘制透明文本的效果是不会产生一个矩形的背景区域。<br />有时候自定义控件时,可能会先画了一个图片,再绘制一个文本,若不绘制透明文本<br />会在先绘制的图片上有一个矩形的背景区域。即有阴影,比较难看。<br />这时候,使用isTransparent参数。<br />另外一个解决的办原创 2011-03-21 23:51:00 · 566 阅读 · 0 评论 -
使Dialog的关闭按钮失效
<br />继承自org.eclipse.jface.Dialog的对话框,覆盖父类Windows的handleShellCloseEvent方法,可使<br />其关闭按钮失效<br />@Override<br /> protected void handleShellCloseEvent() {<br /> //do nothig <br /> //当然在handleShellCloseEvent中做其它事情也是可以的,具体看代码怎么写了。<br /> // 或者在这里面写上其它代码,进原创 2011-05-09 22:57:00 · 719 阅读 · 0 评论 -
RCP开发:cannot locate JRE definition问题的解决
<br />运行.product产品出现如下报错:<br />cannot locate JRE definition :"jre6" launch aborted<br />解决办法:.product编辑器的launhcing页面的java runtime environment处选择jre<br />版本原创 2011-02-24 00:53:00 · 2218 阅读 · 0 评论 -
SWT:底层事件与高级事件的联系
<br />在最底层,系统还是使用的底层事件(这里的底层事件是指无类型事件,不指os底层事件,关于os事件与swt事件的转化今后另外总结)。<br />高级事件只不过是从名称上更见名知义。<br /> <br />从源代码上可以看到,高级事件实际上还是添加的底层事件。以下是Control中摘录的源代码片段。<br /> <br />org.eclipse.swt.Control<br />ControlIstener事件<br />public void addControlListener(Control原创 2011-02-23 00:51:00 · 652 阅读 · 0 评论 -
SWT:无法获取焦点的一些widget
<br />Composite<br />Label<br /> <br />其它的有待以后总结原创 2011-02-23 00:45:00 · 544 阅读 · 0 评论 -
SWT:看文档了解GC
<br />GC文档说明<br />下面一段话摘自GC类源码<br />Application code must explicitly invoke the <code>GC.dispose()</code> <br /> * method to release the operating system resources managed by each instance<br /> * when those instances are no longer required. This is <em>pa原创 2011-02-24 01:09:00 · 325 阅读 · 0 评论 -
GC绘图:开启高级图形子系统
<br />模式开关<br />方法 setAdvance 是系统高级图形子系统的开关,当参数为 true 时,GC 将采用系统高级图形子系统来进行绘图(注意:某些操作系统只有一个绘图子系统,从普通模式切换到高级绘图模式将不起任何作用)。值得注意的是,高级图形子系统将被自动的调用,如果方法 setAlpha(int alpha)、setAntialias(int antialias) 等被调用的话。由于高级模式和普通模式的不同,其输出也可能不同。因此,如果要使用高级模式,应该在所有的绘图操作之前,切换当前模转载 2011-02-24 00:50:00 · 460 阅读 · 0 评论 -
SWT:鼠标滚轮事件
<br />鼠标滚动时触发该事件 : org.eclipse.swt.events.MouseWheelListener<br /> <br />//鼠标滚轮事件<br />eg:<br /> btn.addMouseWheelListener(new MouseWheelListener() {<br /> public void mouseScrolled(MouseEvent e) {<br /> if(e.count == 3){<br /> System.out.println原创 2011-02-24 01:03:00 · 2093 阅读 · 0 评论 -
设置GC绘图中抗锯齿
<br />setAdvanced(true) 以及 setAntialias(int x)<br />eg:<br />gc.setAdvanced(true);<br />gc.setAntialias(SWT.ON);原创 2011-02-23 00:43:00 · 954 阅读 · 0 评论 -
SWT中资源基类Resouce
This class is the abstract superclass of all graphics resource objects. * Resources created by the application must be disposed. 由应用程序创建的资源在使用完后必须由程序员自己释放它。原创 2011-02-23 00:39:00 · 410 阅读 · 0 评论 -
SWT:Tree支持的两个特殊事件
<br />Tree的所支持的几个常用事件<br />SWT.EXpand = 17 展开节点时<br />SWT.Collapse = 18 折叠节点时<br /> <br /> <br />其它的诸如SWT.Paint,SWT.Show,SWT.Resize等在此不提。<br /> <br />原创 2011-03-27 21:09:00 · 1052 阅读 · 0 评论 -
SWT:SWT.Arm事件
<br />一个有趣的listener是ArmListener。当一个菜单选项因为鼠标或者键盘在其上面变成高亮(其实也就是指针或者用方向键移到该选项上)但是没有选中(没有按下左键或者回车键)时调用内部的widgetArmed(ArmEvent e)方法。<br />eg:<br />subactionItem.addArmListener(new ArmListener() {<br /> public void widgetArmed(ArmEvent e) {<br /> System.out.pri原创 2011-06-02 22:40:00 · 624 阅读 · 0 评论 -
使Dialog的关闭按钮失效
<br />继承自org.eclipse.jface.Dialog的对话框,覆盖父类Windows的handleShellCloseEvent方法,可使<br />其关闭按钮失效<br />@Override<br /> protected void handleShellCloseEvent() {<br /> //do nothig <br /> //当然在handleShellCloseEvent中做其它事情也是可以的,具体看代码怎么写了。<br /> // 或者在这里面写上其它代码,进原创 2011-06-02 23:18:00 · 789 阅读 · 0 评论 -
TableViewer,单击首列实现全选与全不选
有时候需要点击表格某列的时候,实现全选与全不选。那么可以将首列文本设置为空来实现这个功能。一般是用在check样式的Table或CheckboxTableViewer上。具体看代码:TableColumn columnCheck = new TableColumn(searchResults, SWT.NONE); columnCheck.setText(""原创 2012-09-12 13:46:48 · 1743 阅读 · 2 评论 -
Eclipse源码阅读:Go To Resource
Go To Resource是Eclipse的Navigate菜单下的一个子菜单的功能,如下所示:Go To Resource Action是一个RetargetAction,在org.eclipse.ui.ide插件中定义,plugin.xml中关于此action的定义内容为:<action definitionId="org.eclipse.ui.n原创 2012-09-02 13:25:33 · 1470 阅读 · 0 评论 -
StructuredViewer的SelectionAll功能是如何实现的
最近有时间就在阅读eclipse源码,今天读了一下Package Explorer视图(所在类为org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart)的内容.我们可以看看其selectionAll是如何实现的.SelectAll效果可能是这样的:即选中所有已展开的树节点.直接贴一下代码吧.package or原创 2012-09-02 10:19:51 · 582 阅读 · 0 评论 -
treeviewer.setSelection(ISelection selection, boolean reveal)传true时无法选中子结点
有前同事问到此问题。调试后发现,是由于TreeViewer的ContentProvider中没有实现getParent方法造成的。关于getParent方法的说明如下:public Object getParent(Object element)The tree viewer calls its content provider’s getParent method whe原创 2012-08-21 17:02:17 · 1092 阅读 · 0 评论 -
org.eclipse.ui.dialogs.FilteredTree的使用
FilteredTree针对TreeViewer包装了过滤功能.基本使用方法如下:FilteredTree filterTree = new FilteredTree(parent, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL | SWT.SINGLE, new PatternFilter(), true);TreeViewer fTreeVie原创 2012-08-03 16:07:27 · 1537 阅读 · 0 评论 -
SWT:关于UI设计
UI设计是一门艺术,它要求美观,得体,友好,专业,以用户为中心,以需求为主导。好的UI,速度快,易扩展,没有废操作,没有华丽的无用点位符----空间匀称。简而言之,就是简洁,美观,友好。状态切换自然(Enable和Disable)。复杂的UI设计,首先整体规划,布局。将整个Client Area分成块。分块实现之。在块以内,以元素为单位,可进行再封装。一个好的前端程序员,不仅要熟悉原创 2011-12-01 23:26:17 · 651 阅读 · 0 评论 -
SWT编码技巧积累
1.包命名org.rssowl.ui.dialogs.cleanup说明:org.rssowl表示公司域名逆序,ui下面全部都是界面设计的类。dialogs表示所有对话框,cleanup代表某一个对话框的所有类。2.控件有visible特性,要充分利用这个特性,如下:Rectangle rect = fColorItem.getBounds();Point pt = new原创 2011-12-01 23:24:58 · 498 阅读 · 0 评论 -
SWT:执行长任务,显示busy光标
显示 busy 光标eg:BusyIndicator.showWhile(window.getShell().getDisplay(), new Runnable() { public void run() { //do something原创 2011-08-17 23:20:48 · 619 阅读 · 0 评论 -
jface的dialog实现非模态
<br /> @Override<br /> protected int getShellStyle() {<br /> return SWT.NO_TRIM|SWT.MODELESS;<br /> }原创 2011-05-09 22:59:00 · 1143 阅读 · 0 评论 -
GC绘图:绘制Text时,在"&"后的一个字符下添加下划线
<br />只需要在使用drawText时,使用SWT.DRAW_MNEMONIC样式即可<br />eg:<br />gc.drawText(_text, x, y,SWT.DRAW_MNEMONIC|SWT.DRAW_TRANSPARENT);原创 2011-05-09 22:54:00 · 561 阅读 · 0 评论 -
设置Shell的透明度
<br />publicc void setAlpha(int alpha)<br />alpha范围为0~255<br />从eclipse3.4开始支持此方法<br /><br />/**<br /> * Sets the receiver's alpha value which must be<br /> * between 0 (transparent) and 255 (opaque).<br /> * <p><br /> * This operation requires the operati原创 2011-05-09 22:58:00 · 621 阅读 · 0 评论 -
SWT:改变对话框默认的工具按钮的布局
<br />改变对话框默认的工具按钮的布局默认是居右。<br /> <br />//重写createButtonsForButtonBar方法<br />protected void createButtonsForButtonBar(Composite parent) {<br /> parent.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));<br /> Composite c = new Composite(parent,SWT.BOR原创 2011-06-02 23:17:00 · 899 阅读 · 0 评论 -
关于SWT资源释放
<br />1) 原则 / 法则: <br />a) 谁构造谁释放;<br />b) 释放父资源时子资源同时被释放;<br /> <br />2) 需要手工释放的情形: <br />a) Display对象;<br />b) 自创建的图形资源对象(如Color、Image、Font等对象);<br /> <br />3) 不需要手工释放的情形: <br />a) Shell对象(Display对象释放时会自动释放);<br />b) 控件(其父资源窗口关闭时会自动释放);<br />c) 系统自带的图形资源原创 2011-04-13 23:16:00 · 696 阅读 · 0 评论 -
解除SWT不允许继承的限制
<br />SWT中对一些类被子类化进行了限制,但也许是为了以后的兼容性,这些类并没有生硬的使用final来强制终态。<br />而是使用了一个叫做checkSubclass的方法,来确保不被子类化。<br /> <br />但有的时候,我们确实想要继承这个类,此时,可以在子类中覆盖 checkSubclass方法,来解除SWT不允许被继承的限制。<br /> <br />eg:<br /> <br />重写checkSubclass()方法<br /> @Override<br /> protect原创 2011-04-13 23:13:00 · 696 阅读 · 0 评论 -
SWT中如何判断平台?
/** Flag specifying if OS is Linux */ private static boolean isLinux = SWT.getPlatform().equalsIgnoreCase("gtk"); /** Flag specifying if OS is Mac */ private static boolean isMac = SWT.getPlatform().equalsIgnoreCase("carbon"); /** Flag specifying if OS原创 2011-04-13 23:09:00 · 582 阅读 · 0 评论 -
Widget:notifyListeners方法---主动触发事件
<br />这里把去点击某个小部件(widget)所导致的事件的过程当作是被动的。因为事件触发是被动的。<br />主动是指在其它部分的代码里去触发小部件所注册的事件,而本身并没有真正意义上的去点击控件。<br /> <br />使用示例<br />Event event = new Event();<br />event.type = SWT.Selection;<br />b1.notifyListeners(SWT.Selection, event);<br /> <br />方法描述和原型:<br原创 2011-02-23 00:36:00 · 3423 阅读 · 0 评论 -
SWT中的错误与异常
<br />SWTError指的是不能修复的错误,以及一些操作系统错误。<br />SWTException指的是一些可恢复的错误以及无效的线程访问之类的错误。<br />IllegalArgumentException指可修复的错误或参数为null之类的错误。<br />原创 2011-02-24 00:56:00 · 664 阅读 · 0 评论 -
事件的e.doit属性
<br />e.doit:是否执行该事件<br />API中的定义:<br />boolean doit<br />depending on the event, a flag indicating whether the operation should be allowed.<br />doit依赖于event(事件),是一个指示操作是否被允许的标志。<br />当doit值为true时为允许,反之则不被允许。在上面的代码中,doit为true的时候,就被允许执行<br />text.addKeyLis原创 2011-02-12 02:32:00 · 1326 阅读 · 0 评论 -
Selection与DefaultSelection事件的区别
如题两个事件分别在SWT中对应的常量为SWT.Selection和SWT.DefaultSelection。同样在分类事件接口SelectionListener接口中有如下两个方法响应这2个事件。widgetSelected和widgetDefaultSelected这两个方法处理的事件类型不同。widgetSelected处理用户用鼠标选择窗口小部件的事件,例如,点击一个按钮。widgetDefaultSelected处理当文本(Text)时,用户[回车]键所产生的事件。经测试button对回车键并不会响原创 2011-02-12 01:57:00 · 1429 阅读 · 0 评论 -
SWT类所代表的事件常量
<br />事件类型常量 说明 <br />SWT.Activate 当激活窗口时 <br />SWT.Arm 菜单项被选中之前 <br />SWT.Close 关闭窗口时 <br />SWT.Collapse 折叠树的节点时 <br />SWT.Deactivate 窗口处于非激活状态时 <br />SWT.DefaultSelection 默认选中时 <br />SWT.Deiconify 窗口不是最小化时 <br />SWT.Dispose 释原创 2011-02-12 01:43:00 · 834 阅读 · 0 评论 -
键盘中一些特殊键在SWT中的常量表示
<br />键盘中一些特殊键在SWT中的常量表示:<br />回车键(enter):SWT.CR int型值为13<br />换行键:SWT.LF<br />Esc键:SWT.ESC int型值为27<br />backspace键:SWT.BS int型值为8<br />Del键:SWT.DEL<br />tab键:SWT.TAB<br />shift键:SWT.SHIFT<br />ctrl键:SWT.CTRL或SWT.CONTROL<br />ALT键:SWT.ALT int型值为65536<b原创 2011-02-12 01:41:00 · 945 阅读 · 0 评论