- 浏览: 709095 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
javenwong:
你好,我现在需要给一个Composite做圆角处理,不知道怎么 ...
SWT圆角窗口绘制 -
whao189:
回家了详细看看
Storyboard 解析 -
zhaoyubetter:
确实够麻烦
IOS 开发环境,证书和授权文件是什么? -
datawarehouse:
一直对这两个认为是一样的,现在学习了。
Oracle DB中的Schema -
yulanfeiyang:
顶,mark
下载音频,在IOS设备上播放
package study.swt; import org.apache.commons.lang.StringUtils; import org.eclipse.swt.SWT; import org.eclipse.swt.accessibility.ACC; import org.eclipse.swt.accessibility.Accessible; import org.eclipse.swt.accessibility.AccessibleControlAdapter; import org.eclipse.swt.accessibility.AccessibleControlEvent; import org.eclipse.swt.events.ControlAdapter; import org.eclipse.swt.events.ControlEvent; import org.eclipse.swt.events.FocusEvent; import org.eclipse.swt.events.FocusListener; import org.eclipse.swt.events.MouseAdapter; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseMoveListener; import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.events.TraverseEvent; import org.eclipse.swt.events.TraverseListener; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Cursor; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.graphics.TextLayout; import org.eclipse.swt.graphics.TextStyle; import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.TypedListener; /** * <b>系统名称:</b>Digital Cinema 心得--SWT 学习与使用<br> * <b>技能名称:</b>可变 Link 颜色的 Link 控件<br> * <b>处理说明:</b> SWT 中的 Link 控件的 link 颜色只能为蓝色,如果 Link 的背景是深色的话,就会导致 Link 看起来比较费劲。本控件提供了一个 setLinkColor()方法设置 Link 的颜色。<br> * <b>变更履历:</b>2007/10/16 MuChunYu Create<br> * <br> * * @author Mu ChunYu * @version 1.0 2007/07/04 初版 * <p> */ public class ColoredLink extends Canvas { /** Link 文字 */ private String text = null; /** Link 文字与边框的距离 */ private static final int INDENT = 3; /** 画 Link 的TextLayout */ private TextLayout layout = null; /** Link的颜色 */ private Color linkColor = null; /** 横向的边框 */ private int hIndent = INDENT; /** 纵向的边框 */ private int vIndent = INDENT; /** Link的范围 */ private Rectangle rect = null; /** * <b>机能概要:</b> 构造函数。<br> * <br> * <b>处理流程:</b> <br> * <ul> * <li>调用父类的构造函数 * <li>初始化TextLayout * <li>添加鼠标移动监听器 * <li>添加鼠标点击监听器 * </ul> * * @param parent 父容器 * @param style 分格 * @since 1.0 * <p> */ public ColoredLink(Composite parent, int style) { super(parent, style); // 初始化TextLayout layout = new TextLayout(getDisplay()); layout.setOrientation(SWT.RIGHT_TO_LEFT | SWT.CENTER); // 添加描画监听器 addPaintListener(new PaintListener() { public void paintControl(PaintEvent event) { // 重画 onPaint(event); } }); // 添加鼠标移动监听器 addMouseMoveListener(new MouseMoveListener() { @Override public void mouseMove(MouseEvent event) { if (rect != null && rect.contains(event.x, event.y)) { setCursor(new Cursor(null, SWT.CURSOR_HAND)); } else { setCursor(new Cursor(null, SWT.NONE)); } } }); // 添加鼠标点击监听器 addMouseListener(new MouseAdapter() { @Override public void mouseDown(MouseEvent event) { if (rect != null && rect.contains(event.x, event.y)) { Event e = new Event(); e.widget = ColoredLink.this; notifyListeners(SWT.Selection, e); redraw(); } } }); // 添加改变大小监听器 addControlListener(new ControlAdapter() { @Override public void controlResized(ControlEvent e) { redraw(); } }); // 添加焦点监听器 addFocusListener(new FocusListener() { public void focusGained(FocusEvent e) { ((Canvas) e.getSource()).redraw(); } public void focusLost(FocusEvent e) { ((Canvas) e.getSource()).redraw(); } }); // 添加Tab监听器,处理Tab键 addTraverseListener(new TraverseListener() { public void keyTraversed(TraverseEvent e) { if (e.detail == SWT.TRAVERSE_TAB_NEXT || e.detail == SWT.TRAVERSE_TAB_PREVIOUS) { e.doit = true; } } }); // 添加键盘监听器,不添加的话控件不能取得焦点 addListener(SWT.KeyDown, new Listener() { public void handleEvent(Event event) { } }); // 设定辅助信息 addAccessibility(); } /** * <b>机能概要:</b> 添加鼠标点击监听器。<br> * <br> * <b>处理流程:</b> <br> * <ul> * <li>添加鼠标点击监听器 * </ul> * * @param listener 监听器 * @since 1.0 * <p> */ public void addSelectionListener(SelectionListener listener) { checkWidget(); if (listener == null) { SWT.error(SWT.ERROR_NULL_ARGUMENT); } TypedListener typedListener = new TypedListener(listener); addListener(SWT.Selection, typedListener); addListener(SWT.DefaultSelection, typedListener); } /** * <b>机能概要:</b> 删除鼠标点击监听器。<br> * <br> * <b>处理流程:</b> <br> * <ul> * <li>删除鼠标点击监听器 * </ul> * * @param listener 监听器 * @since 1.0 * <p> */ public void removeSelectionListener(SelectionListener listener) { checkWidget(); if (listener == null) { SWT.error(SWT.ERROR_NULL_ARGUMENT); } removeListener(SWT.Selection, listener); } /** * <b>机能概要:</b> 设定辅助信息。<br> * 不知道具体干吗的,可以不作<br> * <b>处理流程:</b> <br> * <ul> * <li>设定辅助信息 * </ul> * * @param listener 监听器 * @since 1.0 * <p> */ private void addAccessibility() { Accessible accessible = getAccessible(); accessible.addAccessibleControlListener(new AccessibleControlAdapter() { @Override public void getChildAtPoint(AccessibleControlEvent e) { e.childID = ACC.CHILDID_SELF; } @Override public void getChildCount(AccessibleControlEvent e) { e.detail = 0; } @Override public void getRole(AccessibleControlEvent e) { e.detail = ACC.ROLE_LINK; } @Override public void getLocation(AccessibleControlEvent e) { Rectangle location = getBounds(); if (location != null) { Point pt = toDisplay(new Point(location.x, location.y)); e.x = pt.x; e.y = pt.y; e.width = location.width; e.height = location.height; } } @Override public void getState(AccessibleControlEvent e) { e.detail = ACC.STATE_FOCUSABLE; if (isFocusControl()) { e.detail |= ACC.STATE_FOCUSED; } } @Override public void getSelection(AccessibleControlEvent e) { if (isFocusControl()) { e.childID = ACC.CHILDID_SELF; } } @Override public void getFocus(AccessibleControlEvent e) { if (isFocusControl()) { e.childID = ACC.CHILDID_SELF; } } @Override public void getDefaultAction(AccessibleControlEvent e) { e.result = SWT.getMessage("SWT_Press"); } }); } /** * <b>机能概要:</b> 画Link。<br> * <br> * <b>处理流程:</b> <br> * <ul> * <li>计算Link文字的位置 * <li>画Link * <li>保存link文字的位置 * <li>画取得Focus的虚线 * </ul> * * @param event イベント * <p> */ void onPaint(PaintEvent event) { // 计算Link文字的位置 Rectangle txtRect = layout.getBounds(); Rectangle ctlRect = getBounds(); hIndent = 0; vIndent = ctlRect.height - txtRect.height; vIndent = (vIndent > 0 ? vIndent : 0) / 2; // 画 layout.draw(event.gc, hIndent, vIndent); // 保存link文字的位置 rect = new Rectangle(hIndent, vIndent, txtRect.width, txtRect.height); // 画取得Focus的虚线 if (isFocusControl()) { event.gc.drawFocus(hIndent, vIndent, txtRect.width, txtRect.height); } } /** * <b>机能概要:</b> 取得Link的文字。<br> * <br> * <b>处理流程:</b> <br> * <ul> * <li>取得Link的文字 * </ul> * * @return text Link的文字 * <p> */ public String getText() { return text; } /** * <b>机能概要:</b> 设定Link的文字。<br> * <br> * <b>处理流程:</b> <br> * <ul> * <li>设定 Link 的文字 * <li>设定 Link 的文字的风格,下划线和颜色 * </ul> * * @param text Link 的文字 * <p> */ public void setText(String text) { this.text = text; layout.setText(this.text); TextStyle txtStyle = new TextStyle(null, linkColor, null); txtStyle.underline = true; layout.setStyle(txtStyle, 0, StringUtils.isEmpty(text) ? 0 : text.length()); } /** * <b>机能概要:</b> 设置 Link 的颜色。<br> * <br> * <b>处理流程:</b> <br> * <ul> * <li>设置 Link 的颜色 * </ul> * * @param linkColor Link 的颜色 * <p> */ public void setLinkColor(Color linkColor) { this.linkColor = linkColor; } /** * <b>机能概要:</b> 计算 Link 的位置。<br> * <br> * <b>处理流程:</b> <br> * <ul> * <li>计算Link的位置 * </ul> * * @param wHint 设定大小 * @param hHint 设定大小 * @param changed 变更标志 * @return Point Link 的位置 * <p> */ @Override public Point computeSize(int wHint, int hHint, boolean changed) { Rectangle txtRect = getBounds(); int width = wHint; int height = hHint; if (wHint != SWT.DEFAULT) { width = txtRect.width; } if (hHint != SWT.DEFAULT) { height = txtRect.height; } return new Point(width + 2, height + 2); } } 三、使用方式 1、添加 Link ColoredLink lnkColumn1 = new ColoredLink(cmpColumn1, SWT.NONE); lnkColumn1.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true)); lnkColumn1.setForeground(StyleUtils.getDetailForeground()); lnkColumn1.setLinkColor(StyleUtils.getLinkForeground()); lnkColumn1.setText(column); lblCert.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { // TODO }
发表评论
-
SWT圆角窗口绘制
2009-06-16 18:11 4249SWT窗口如果要使用自己的不规则图片做背景,就需要手动编码去处 ... -
SWT下拉列表框样式
2009-06-15 10:02 2332Combo com = new Combo(composite ... -
其他线程访问UI线程
2009-05-11 14:31 1813final ProgressBar pb = new Prog ... -
SWT中设置Tab顺序
2009-03-27 22:07 1970使用Composite的setTabs(Control[])方 ... -
import org.eclipse.jface.viewers.TreeViewer; 展开树操作
2009-03-23 19:32 3066import org.eclipse.jface.viewer ... -
SWT中获取字符串占用像素数
2009-02-24 18:18 1717可以使用GC类的getAdvanceWidth(char ch ... -
Eclipse中如何管理图像资源
2009-02-06 13:01 1721Eclipse中最为人所垢病的 ... -
SWT窗口样式设置
2009-01-21 16:12 2472/** * 设置窗口的样式(屏幕居中,主题等) * * ... -
JFace简介
2009-01-15 11:01 1229JFace是在SWT之上的一层抽象。在SWT中,你通常创建控件 ... -
SWT小技巧
2009-01-15 10:21 2801Composite背景渐变: composite_main. ... -
Eclipse中的图片资源管理
2009-01-14 17:43 2054在本文中,将讨论如下内容: 1、 系统资源,为后面讨论图片 ... -
SWT Display.getDefault() 和Display.getCurrent()的区别
2009-01-05 14:00 2085Display.getCurrent() 当当前代码和当前的界 ... -
了解Display和Shell
2009-01-05 13:58 1043在前一个helloWorld程序中,虽然例子很简单,但是反映了 ... -
SWT进度条组件ProgressBar
2008-11-13 10:55 10636ProgressBar是SWT中的进度条组件。进度条提供了比较 ... -
swt窗体居中显示
2008-11-10 21:47 2782public static void main(String ...
相关推荐
SWT自带的DateTime控件属实不好用,而且无法绑定到其他控件上。因此自己写一个日历控件用着方便,功能大致如下: 1、日历控件可自定义设置常见的几种日期格式; 2、可以绑定注册到其他控件如:文本框、按钮、标签上...
通过以上分析,我们可以了解到 `ColoredLink` 类是如何实现自定义颜色的 `Link` 控件的,包括其构造过程、关键属性以及如何通过监听器响应用户事件。这种自定义方式为开发者提供了更多的灵活性,可以根据需求定制...
SWT使用JNI(Java Native Interface)来实现这一目标,它允许Java代码直接调用操作系统提供的API,从而避免了Java AWT和Swing中的“重量级”组件带来的性能问题。 ### 2. 自定义控件的基础 在SWT中,自定义控件通常...
SWT中实现shell Canvas Composite等控件的背景透明
Java使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的...
这个控件类可能是基于SWT的`Combo`或`Composite`组件进行扩展,以实现日期和时间的选择功能。通常,此类控件会包含两个部分:日期选择器和时间选择器,可能通过下拉菜单或者日历视图来展示。用户可以点击选择具体的...
6. **可配置性**:开发者可以根据需求调整控件的外观,比如颜色、字体、大小等。 7. **易用性**:通过简单的API调用即可在SWT程序中集成此控件,提供便利的初始化和设置方法。 为了使用这个自定义的日期时间选择...
2. **设计属性**:为控件提供可配置的属性,如行高、颜色列表等。 ```java public void setColorList(Vector<Color> colors) { this.colors = colors; // 更新显示 } public Vector<Color> getColorList() { ...
**SWT控件详解** SWT(Standard Widget Toolkit)是由Eclipse基金会开发并维护的一套用于构建图形用户界面(GUI)的开源库,它是Java语言中的一个GUI工具包,主要面向那些希望创建高性能、原生外观的应用程序的...
### SWT Table单元格编辑功能详解 在Java图形用户界面(GUI)开发中,SWT...通过以上步骤,我们可以在SWT `Table`控件中实现单元格的编辑功能,使用户能够直接在界面上修改数据,提高了应用的交互性和实用性。
OCE(Open Component Environment)可能是指开放组件环境,它可能与Eclipse插件系统有关,允许开发者将SWT控件和其他组件集成到一个可扩展的环境中。然而,"oce"标签在SWT上下文中并不常见,可能需要进一步的信息来...
6. **可定制性**:提供API让开发者可以调整控件样式,如颜色、字体等,以适应整体应用的UI风格。 在实际开发中,集成这样的第三方日期选择器通常包括以下步骤: 1. **引入依赖**:在项目中添加该第三方库的依赖,...
根据提供的文件信息,可以看出本文主要讨论的是如何在 SWT (Standard Widget Toolkit) 的 Table 控件中实现文本换行的功能。SWT 是一个用于开发基于 Java 的桌面应用程序的工具包,它提供了丰富的用户界面组件来帮助...
本文将深入探讨如何使用Draw2D模拟SWT中的RadioButton和CheckedBox控件,以及这些控件在实际应用中的作用和实现方式。 首先,RadioButton和CheckedBox是GUI中的两种常见选择控件。RadioButton通常用于提供一组互斥...
SWT控件包括按钮、文本框、列表、表格、树形视图、滚动条、菜单等基本元素,以及更复杂的如日历、颜色选择器等。SWT的优势在于它能充分利用操作系统的图形资源,避免了Java AWT或Swing中常见的“Java Look and Feel...
SWT 使用 OLE 函数调用com控件的资料 SWT 使用 OLE 函数调用com控件的资料SWT 使用 OLE 函数调用com控件的资料SWT 使用 OLE 函数调用com控件的资料 SWT 使用 OLE 函数调用com控件的资料
在IT行业中,有时候我们需要在Java应用中集成第三方控件或者组件来实现特定的功能,比如在SWT(Standard Widget Toolkit)环境中嵌入Word编辑器。这篇博客"SWT中嵌入Word控件应用"可能就是讲述如何在Java SWT界面中...
通过这样的模拟,开发者可以在没有SWT支持的环境中,或者为了实现特殊视觉效果时,使用Draw2D来构建类似功能的控件。这种技术对于跨平台应用,尤其是嵌入式系统或轻量级应用来说非常有用,因为它们可能无法使用完整...
总的来说,这个示例涵盖了SWT GUI开发、时间选择控件的使用、Java定时任务的实现以及通过批处理文件运行Java应用程序的技巧。通过深入学习和理解这些内容,开发者可以创建出具有复杂交互和定时功能的桌面应用程序。