TextField、TextArea也是SWT里常用的控件,接下来我们来模拟它们。
效果图:
上面是TextField,下面是TextArea。
TextField就比较简单了,给Label设一个边框,修改一下背景色,然后绘制一下文字就行了。
TextFieldFigure.java
public class TextFieldFigure extends Label {
public TextFieldFigure() {
this("");
}
public TextFieldFigure(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);
}
/* (non-Javadoc)
* @see org.eclipse.draw2d.Label#setText(java.lang.String)
*/
@Override
public void setText(String s) {
super.setText(s);
repaint();
}
}
不解释了。
TextAreaFigure就比较麻烦了,主要是右边的滚动条,还需要根据大小来调整,不过自Draw2D,绘制功能尤其强大,有draw就足够实现它了。
右边分为三部分,上下是箭头按钮,图片模拟,中间为滚动区域,填充颜色就行。
TextAreaFigure.java:
public class TextAreaFigure extends Label{
private static final Image UP = createImage("icons/textarea_1.gif");
private static final Image DOWN = createImage("icons/textarea_2.gif");
private static Image createImage(String name) {
InputStream stream = TextAreaFigure.class.getResourceAsStream(name);
Image image = new Image(null, stream);
try {
stream.close();
} catch (IOException ioe) {
}
return image;
}
/**
*
*/
public TextAreaFigure() {
LineBorder lineBorder = new LineBorder();
lineBorder.setColor(ResourceConstants.BORDER_COLOR);
setBorder(lineBorder);
}
/* (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(FigureUtils.adjustForLineBorder(bound));
graphics.setBackgroundColor(ColorConstants.button);
graphics.fillRectangle(bound.x - UP.getBounds().width + bound.width, bound.y + 2, UP.getBounds().height, bound.height-2);
graphics.drawImage(UP,bound.x - UP.getBounds().width -2 + bound.width, bound.y + 2);
graphics.drawImage(DOWN,bound.x - UP.getBounds().width - 2 + bound.width, bound.y + bound.height - UP.getBounds().height );
}
}
图片见附件。其他的就不解释了。
分享到:
相关推荐
### SWT控件知识学习笔记 #### 一、SWT/JFace常用组件介绍 SWT (Standard Widget Toolkit) 是 Eclipse 平台的一个图形界面工具包,它提供了与平台无关的 GUI 组件,允许开发者构建高性能的应用程序。SWT/JFace ...
在IT行业中,文本输入控件是用户界面设计中不可或缺的一部分,它们允许用户输入和编辑文本。在本文中,我们将深入探讨“TextArea”和“TextField”这两个在ActionScript 3(AS3)中用于处理文本输入的组件,以及如何...
本篇我们主要关注"Ext表单组件之textField",它是最基础也是最常用的输入控件,用于接收用户的文本输入。 一、Ext.form.TextField简介 Ext.form.TextField是Ext JS中的一个核心组件,它允许用户在表单中输入单行...
在ExtJs5中,开发人员有时需要自定义UI以满足特定的设计需求,比如去掉`textfield`组件的边框。在给定的描述中,我们看到开发者遇到了一个问题:默认情况下,ExtJs5的`textfield`组件有明显的边框,但通过添加特定的...
在EXT表单中,TextField是最常见的输入控件,用于接收用户的文本输入。`vtype`是EXT TextField的一个关键属性,用于定义输入字段的验证规则,确保用户输入的数据符合特定格式或条件。 EXT中的TextField支持多种...
在Android开发中,`TextField`是用于用户输入文本的基本组件,尤其在构建用户界面时扮演着重要角色。在本文中,我们将深入探讨`TextField`如何实现多行输入,即自动换行的功能,并揭示一个小小的惊喜——只需导入一...
总结来说,“文本编辑器-textField实现”项目涉及到使用`TextField`或`TextArea`创建一个基础的文本输入区域,通过`RichTextFX`库扩展其功能,实现文本格式化、颜色设置、字号调整和字体选择。这样的编辑器对开发者...
在Swift中,基本控件是构建用户界面的核心元素,它们使得用户能够与应用程序进行交互。在这里,我们将深入探讨Swift中的`label`(标签)、`button`(按钮)和`textField`(文本字段),以及如何利用它们来实现从系统...
EXTJS 5 Textfield 金额控件扩展就是为了满足这一需求而设计的。这个扩展提供了一个专门的组件,它增强了标准的Textfield,增加了对货币格式化和验证的支持。 EXTJS是一个强大的JavaScript库,主要用于构建富客户端...
Java中的`TextField`类是Swing库中的一个基础组件,用于创建用户可以在其上输入文本的单行文本字段。在GUI编程中,`TextField`是一个非常常见的元素,它允许用户输入和编辑一行文本。以下是对`TextField`类的详细...
一套完整的自定义的qmlGUI控件,功能强大完全可以拿去开发项目而不用重复造轮子。包括Button,Calendar,CheckBox,ComboBox,CtrlDialog,DateEdit,DatePicker,Dialog,FileDialog,ImageButton,Label,LineEdit...
TextField在Flash中是一个基础的文本显示和编辑控件,它可以处理简单的文本输入,但通过扩展和自定义,可以实现更复杂的图文混排。 标题“基于TextField的图文混编的组件”表明我们正在探讨如何利用TextField类构建...
在标题“ios-模拟AlertView的textField输入框.zip”中提到的问题,开发者遇到了`UIAlertController`无法直接显示多行文本输入的需求。在这种情况下,开发者选择创建一个自定义的解决方案来模拟`UIAlertView`的`...
在iOS开发中,`textField` 是一个非常常见的控件,用于接收用户输入的文字信息。在很多情况下,我们可能需要在用户交互时管理键盘的显示和隐藏,以优化用户体验。在这个"textField的一个简单例子"中,我们将探讨如何...
在Flex3中,`TextArea` 是一个常用的组件,用于显示多行可编辑的文本。当用户输入的内容增多时,为了提供良好的用户体验,我们通常希望`TextArea`的高度能够自适应地扩展,以显示所有内容,而无需滚动条或者内容被...
在`Scene2D`中,UI控件通常继承自`Actor`类,例如`Button`、`Label`、`Image`和`TextField`。每个控件都有自己的属性和方法,用于定制其外观和行为。 1. **Button**: 按钮是最基本的交互元素,可以响应点击事件。你...
在“Cocos2d-x之Lua核心编程(第二版)_配套代码”中,我们可以找到一系列的示例和代码,这些代码涵盖了Cocos2d-lua的核心功能和编程技巧。 一、Cocos2d-lua简介 Cocos2d-lua是Cocos2d-x的一个扩展,它允许开发者使用...
在iOS开发中,TextField是用户输入文本的基本控件,它通常用于收集用户的单行文本信息。然而,标准的UITextField在处理多行文本时可能存在局限,因为它默认不支持自适应高度,即不能根据输入内容的多少自动调整自身...
在iOS开发中,`UITextField` 是一个非常重要的控件,用于接收用户输入的文字信息。而`InputView`是`UITextField`的一个属性,它允许我们自定义键盘上方的视图,以此来提供更丰富的用户交互体验。`TextField-...