`
salever
  • 浏览: 255703 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Draw2D 模拟SWT控件之ComboBox

阅读更多

ComboBox是SWT中很常见的空间,在Draw2D里我们又得自己去实现它。

SWT Designer中的效果很好,我们就参考它来实现ComboBox。

 

先看看效果:

拆分一下,Combo主要为两部分:左边的输入选择栏和右边的箭头式按钮。右边的按钮又是一个图片了,而左边的文字,直接绘制上去得了。

ComboBoxFigure.java:

public class ComboBoxFigure extends Label {

	private static final Image IMAGE = createImage("icons/combobox.gif");
	
	private static Image createImage(String name) {
		InputStream stream = ComboBoxFigure.class.getResourceAsStream(name);
		Image image = new Image(null, stream);
		try {
			stream.close();
		} catch (IOException ioe) {
		}
		return image;
	}
	
	public ComboBoxFigure() {
		this("");
	}

	public ComboBoxFigure(String text) {
		super(text);
		setMinimumSize(new Dimension(FigureConstants.COMBOBOX_DEFAULT_WIDTH,
				FigureConstants.COMBOBOX_FIXED_HEIGHT));
		LineBorder lineBorder = new LineBorder();
		lineBorder.setColor(ResourceConstants.BORDER_COLOR);
		setBorder(lineBorder);
	}
	
	/* (non-Javadoc)
	 * @see org.eclipse.draw2d.Figure#setBounds(org.eclipse.draw2d.geometry.Rectangle)
	 */
	@Override
	public void setBounds(Rectangle rect) {
		rect.height = FigureConstants.COMBOBOX_FIXED_HEIGHT;
		super.setBounds(rect);
	}
	
	/* (non-Javadoc)
	 * @see org.eclipse.draw2d.Label#paintFigure(org.eclipse.draw2d.Graphics)
	 */
	@Override
	protected void paintFigure(Graphics graphics) {
		super.paintFigure(graphics);
		Rectangle bound = getBounds();
		graphics.setBackgroundColor(ColorConstants.white);
		graphics.fillRectangle(bound.x,bound.y, bound.width, bound.height);
		graphics.drawText(getText(), bound.x + 2, bound.y + 4);
		graphics.drawImage(IMAGE, bound.x + bound.width - IMAGE.getBounds().width, bound.y + 2);
	}
	
	

	/* (non-Javadoc)
	 * @see org.eclipse.draw2d.Label#setText(java.lang.String)
	 */
	public void setText(String s) {
		super.setText(s);
		repaint();
	}
}

 几个常量说明一下:

FigureConstants.COMBOBOX_DEFAULT_WIDTH = 100 //Combo的默认宽度
FigureConstants.COMBOBOX_FIXED_HEIGHT = 21//Combo的指定高度

 paintFiugure的时候,依然要注意一些细微的调节,这些都是为了使绘制出来的图形更好看一些而已,分析代码可以发现,左边的文字也是绘制上去的。

这里的ComboBox也仅仅是外观上的模拟,并没有一些事件响应和操作处理,在图形编辑器下,我们需要外观上的模拟也就够了。

图片见附件。

  • 大小: 125 Bytes
2
1
分享到:
评论

相关推荐

    C# 自定义控件 自定义ComboBox

    在本案例中,我们将深入探讨如何自定义ComboBox控件。 ComboBox控件是Windows Forms中一个非常实用的组件,它结合了文本框和下拉列表的功能。用户可以输入文本,也可以从下拉列表中选择一个项。在某些情况下,我们...

    DropDownList控件和comboBox控件自动生成年月日

    DropDownList控件和ComboBox控件自动生成年月日 DropDownList控件和ComboBox控件是ASP.NET Web Form中常用的控件,它们可以用来实现选择年月日的功能。下面将详细介绍如何使用DropDownList控件和ComboBox控件自动...

    ComboBox控件模拟.rar

    本项目“ComboBox控件模拟.rar”正是针对这样的场景,通过组合CEdit和CListBox控件来实现ComboBox的效果,并且利用SetWindowPos函数进行更精细的窗口位置控制。 首先,让我们了解CEdit、CListBox和CComboBox这三个...

    C#WinForm控件展系列之ComboBox组合框控件

    本篇文章将深入探讨C# WinForm中的一个重要控件——ComboBox组合框控件,它在用户界面设计中起着至关重要的作用。 ComboBox控件结合了文本输入框和下拉列表的功能,用户既可以手动输入文本,也可以从预设的选项列表...

    wpf 带有TreeView控件的ComboBox

    在Windows Presentation Foundation (WPF) 中,`ComboBox` 和 `TreeView` 是两种常见的用户界面控件,它们各自具有独特的作用。`ComboBox` 提供了一个下拉列表,用户可以从预定义的选项中选择一个,而`TreeView` 则...

    Delphi为StringGrid控件增加Combobox下拉框.rar

    Delphi为StringGrid网格显示控件中增加下拉框功能,也就是在Grid控件中添加Combobox下拉列表的功能,在任意列显示一个ComboBox功能,如演示截图所示,可大大扩展Grid的功能。生成列表:  with Sender as TComboBox ...

    SWT Combobox联动菜单

    用eclipse的SWT编写的Combobox控件联动菜单: 将MySql数据库的主分类读入combo中,然后通过判断数据库中ID从而得到相应子分类中的数据,然后将数据读入到subcombo Mysql数据库文件: 主分类表:mcc id MainClass 0 ...

    VB.Net自己写的一个控件:ComboBox下拉列表中显示多列数据

    自己考虑到可以用一个ComboBox和一个ListView结合做一个能够显示多列内容的ComboBox下拉框,可以将一个数据表绑定到ComboBox中的用户控件。 界面和用法:...

    C#自定义控件--美化ComboBox源码

    标题"C#自定义控件--美化ComboBox源码"提示我们将深入探讨如何在C#中创建自定义的ComboBox控件,并对其进行美化。这个过程通常涉及到以下几个关键知识点: 1. **继承和扩展System.Windows.Forms.ComboBox类**:为了...

    下拉列表控件-ComboBox运用

    在编程和用户界面设计中,下拉列表控件(ComboBox)是一种常见的交互元素,它允许用户从一组预定义的选项中进行选择。本教程主要针对初学者,将深入讲解ComboBox的运用及其相关函数,帮助你更好地理解和应用这个控件...

    wpf 带有DataGrid控件的ComboBox

    这个自定义`ComboBox`控件的独特之处在于它不仅是一个简单的下拉列表,还具备以下特性: 1. **搜索字段**:用户可以在`ComboBox`的文本输入框内输入关键词,系统会自动过滤并显示匹配的下拉选项。这种功能在大数据...

    linux下lazarus开发ide里BGRAControls控件库comboBox示例

    在这个特定的场景中,我们关注的是BGRAControls控件库中的ComboBox控件的示例。 BGRAControls控件库是一个第三方扩展,为Lazarus和Free Pascal增加了许多自定义和增强的控件。这个库由Borut Raštan设计,提供了比...

    C# ListView中添加ComboBox等控件

    标题"\"C# ListView中添加ComboBox等控件\"\"指的是如何在ListView的每一行或每一列中添加ComboBox控件,使用户可以在ListView内进行更复杂的操作。这个过程通常涉及到以下几个步骤: 1. **创建ListView控件**:...

    vs2008演示ComboBox下拉列表控件的使用实例

    在Visual Studio 2008(VS2008)中,ComboBox是一个非常常见的控件,它结合了文本框和下拉列表的功能,允许用户在输入文本的同时选择预定义的选项。这个“vs2008演示ComboBox下拉列表控件的使用实例”将向我们展示...

    WPF 下拉列表框ComboBox扩展控件

    在本文中,我们将深入探讨如何在WPF(Windows Presentation Foundation)环境中扩展标准的ComboBox控件,使其能够包含更丰富的交互式元素,如DataGrid、ListView和ListBox。这将极大地提升用户体验,同时也为开发者...

    SWT combobox 联动菜单

    用eclipse的SWT编写的Combobox控件联动菜单: 将MySql数据库的主分类读入combo中,然后通过判断数据库中ID从而得到相应子分类中的数据,然后将数据读入到subcombo Mysql数据库文件: 主分类表:mcc id MainClass ...

    wpf_combobox_tree下拉树形控件

    在本文中,我们将深入探讨如何将Silverlight的树形下拉控件转化为WPF(Windows Presentation Foundation)环境下的使用,并以此创建一个名为“wpf_combobox_tree”的自定义控件。这种控件通常用于增强传统的ComboBox...

    DataGridView控件中加入ComboBox下拉列表框

    而有时候,我们希望在某些单元格中不仅能够输入文本,还能让用户从预设的选项中选择,这时就需要用到`ComboBox`控件。在本篇文章中,我们将深入探讨如何在`DataGridView`中集成`ComboBox`下拉列表框,以及相关的实现...

    在DataGridView控件中加入ComboBox下拉列表框的实现

    在.NET Framework的Windows Forms开发中,`DataGridView`控件是一个常用的数据展示工具,而`ComboBox`则用于提供下拉选项供用户选择。将`ComboBox`集成到`DataGridView`的某一列,可以为用户提供更加丰富的交互体验...

    C#自定义控件--美化ComboBox源码(十分经典)

    本篇将详细探讨如何通过C#来自定义一个美化版的ComboBox控件,使其在功能和视觉效果上超越默认的系统控件。 首先,ComboBox是.NET Framework提供的一种常用控件,它结合了下拉列表和文本框的功能,用户可以在文本框...

Global site tag (gtag.js) - Google Analytics