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
分享到:
相关推荐
在本案例中,我们将深入探讨如何自定义ComboBox控件。 ComboBox控件是Windows Forms中一个非常实用的组件,它结合了文本框和下拉列表的功能。用户可以输入文本,也可以从下拉列表中选择一个项。在某些情况下,我们...
DropDownList控件和ComboBox控件自动生成年月日 DropDownList控件和ComboBox控件是ASP.NET Web Form中常用的控件,它们可以用来实现选择年月日的功能。下面将详细介绍如何使用DropDownList控件和ComboBox控件自动...
本项目“ComboBox控件模拟.rar”正是针对这样的场景,通过组合CEdit和CListBox控件来实现ComboBox的效果,并且利用SetWindowPos函数进行更精细的窗口位置控制。 首先,让我们了解CEdit、CListBox和CComboBox这三个...
本篇文章将深入探讨C# WinForm中的一个重要控件——ComboBox组合框控件,它在用户界面设计中起着至关重要的作用。 ComboBox控件结合了文本输入框和下拉列表的功能,用户既可以手动输入文本,也可以从预设的选项列表...
在Windows Presentation Foundation (WPF) 中,`ComboBox` 和 `TreeView` 是两种常见的用户界面控件,它们各自具有独特的作用。`ComboBox` 提供了一个下拉列表,用户可以从预定义的选项中选择一个,而`TreeView` 则...
Delphi为StringGrid网格显示控件中增加下拉框功能,也就是在Grid控件中添加Combobox下拉列表的功能,在任意列显示一个ComboBox功能,如演示截图所示,可大大扩展Grid的功能。生成列表: with Sender as TComboBox ...
用eclipse的SWT编写的Combobox控件联动菜单: 将MySql数据库的主分类读入combo中,然后通过判断数据库中ID从而得到相应子分类中的数据,然后将数据读入到subcombo Mysql数据库文件: 主分类表:mcc id MainClass 0 ...
自己考虑到可以用一个ComboBox和一个ListView结合做一个能够显示多列内容的ComboBox下拉框,可以将一个数据表绑定到ComboBox中的用户控件。 界面和用法:...
标题"C#自定义控件--美化ComboBox源码"提示我们将深入探讨如何在C#中创建自定义的ComboBox控件,并对其进行美化。这个过程通常涉及到以下几个关键知识点: 1. **继承和扩展System.Windows.Forms.ComboBox类**:为了...
在编程和用户界面设计中,下拉列表控件(ComboBox)是一种常见的交互元素,它允许用户从一组预定义的选项中进行选择。本教程主要针对初学者,将深入讲解ComboBox的运用及其相关函数,帮助你更好地理解和应用这个控件...
这个自定义`ComboBox`控件的独特之处在于它不仅是一个简单的下拉列表,还具备以下特性: 1. **搜索字段**:用户可以在`ComboBox`的文本输入框内输入关键词,系统会自动过滤并显示匹配的下拉选项。这种功能在大数据...
在这个特定的场景中,我们关注的是BGRAControls控件库中的ComboBox控件的示例。 BGRAControls控件库是一个第三方扩展,为Lazarus和Free Pascal增加了许多自定义和增强的控件。这个库由Borut Raštan设计,提供了比...
标题"\"C# ListView中添加ComboBox等控件\"\"指的是如何在ListView的每一行或每一列中添加ComboBox控件,使用户可以在ListView内进行更复杂的操作。这个过程通常涉及到以下几个步骤: 1. **创建ListView控件**:...
在Visual Studio 2008(VS2008)中,ComboBox是一个非常常见的控件,它结合了文本框和下拉列表的功能,允许用户在输入文本的同时选择预定义的选项。这个“vs2008演示ComboBox下拉列表控件的使用实例”将向我们展示...
在本文中,我们将深入探讨如何在WPF(Windows Presentation Foundation)环境中扩展标准的ComboBox控件,使其能够包含更丰富的交互式元素,如DataGrid、ListView和ListBox。这将极大地提升用户体验,同时也为开发者...
用eclipse的SWT编写的Combobox控件联动菜单: 将MySql数据库的主分类读入combo中,然后通过判断数据库中ID从而得到相应子分类中的数据,然后将数据读入到subcombo Mysql数据库文件: 主分类表:mcc id MainClass ...
在本文中,我们将深入探讨如何将Silverlight的树形下拉控件转化为WPF(Windows Presentation Foundation)环境下的使用,并以此创建一个名为“wpf_combobox_tree”的自定义控件。这种控件通常用于增强传统的ComboBox...
而有时候,我们希望在某些单元格中不仅能够输入文本,还能让用户从预设的选项中选择,这时就需要用到`ComboBox`控件。在本篇文章中,我们将深入探讨如何在`DataGridView`中集成`ComboBox`下拉列表框,以及相关的实现...
在.NET Framework的Windows Forms开发中,`DataGridView`控件是一个常用的数据展示工具,而`ComboBox`则用于提供下拉选项供用户选择。将`ComboBox`集成到`DataGridView`的某一列,可以为用户提供更加丰富的交互体验...
本篇将详细探讨如何通过C#来自定义一个美化版的ComboBox控件,使其在功能和视觉效果上超越默认的系统控件。 首先,ComboBox是.NET Framework提供的一种常用控件,它结合了下拉列表和文本框的功能,用户可以在文本框...