最近使用swt开发一套试题编辑管理工具的时候遇到一个需求,就是用户需要从200多个选项中选出一个,如果使用下拉列表,显然很难使用,以前遇到这种问题的时候,一般都是使用“自动完成”来实现,就是让用户输入编号或者选项的拼音简拼,然后自动带出一个经过筛选的下拉列表,用户这个时候在这个经过筛选的下拉列表选择就可以了,以前曾经用vb和javascript各实现过一次,现在用swt来实现,思路比较简单,就是当用户在文本框输入编号或者拼音,然后按回车键以后,文本框的下面新建一个下拉列表,然后填充下拉列表,当用户选择下拉列表的时候,根据用户的选择填充文本框,同时销毁下拉列表,主要代码如下:
假设我们需要用户在考查点文本框输入拼音或者代码的时候,下面出现自动完成的下拉列表,
kcdText.addKeyListener(new KeyAdapter() {
public void keyPressed(final KeyEvent event) {
if (event.keyCode == SWT.CR || event.keyCode == SWT.LF) {
showlist(kcdText.getText());
}
}
});
private void showlist(String input) {
final org.eclipse.swt.widgets.List single = new org.eclipse.swt.widgets.List(
mainComposite, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL);
single.removeAll();
single.setVisible(false);
//tbkcdList是所有可供选择的考查点列表
for (Iterator iter = tbkcdList.values().iterator(); iter
.hasNext();) {
TbKcdDm obj = (TbKcdDm) iter.next();
//考查点对象的拼音属性可以用程序自动计算产生,网上有不少现成的例子
if (obj.getPinyin().indexOf(input) == 0
|| obj.getKcdid().toString().equals(input)) {
single.add("(" + obj.getKcdid() + ")" + obj.getKcdname());
}
}
single.setBounds(kcdText.getBounds().x, kcdText.getBounds().y
+ kcdText.getBounds().height, 200, 60);
single.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
String temptext = kcdText.getText();
if (temptext.indexOf("|") >= 0) {
kcdText.setText("|" + (single.getSelection()[0])
+ (temptext.substring(kcdText.getCaretPosition())));
} else {
kcdText.setText("|" + (single.getSelection()[0]));
}
single.setVisible(false);
single.dispose();
kcdText.setFocus();
}
});
if (single.getItemCount() > 0) {
single.setVisible(true);
}
else
{
single.dispose();
}
}
效果如图所示:
分享到:
相关推荐
本话题将详细探讨如何利用SWT来实现一个类似于SQL自动提示的功能。 在数据库管理或开发环境中,SQL自动提示功能是非常常见且实用的特性,它可以帮助程序员快速输入SQL语句,减少错误并提高工作效率。通常,这样的...
### Java SWT 版本QQ实现的主要功能 #### 登陆窗口设计与实现 1. **登录面板**:登录面板是用户进入软件的第一界面,主要由账号输入框、密码输入框、登录按钮等元素构成。其中,账号输入框用于输入用户的账号信息...
这个名为"swt-demo.zip"的压缩包包含了一个基于SWT实现的图片列表预览应用,它展示了如何利用SWT库来创建功能丰富的图像浏览界面。以下是关于SWT和这个特定示例应用的一些详细知识点: 1. SWT简介:SWT是Sun ...
SWT 提供了多种布局管理器,如 `GridLayout`,`FillLayout`,`MigLayout` 等,它们帮助自动调整控件的大小和位置。例如,`GridLayout` 可以使控件按照网格布局,而 `FillLayout` 则使控件充满容器。 8. **扩展功能...
然而,需要注意的是,SWT和GWT在底层实现上有很大的差异,因此并非所有的SWT功能都能直接映射到GWT。在实际操作中,可能需要对原始SWT代码进行适配和重构,以适应Web环境。 在进行这样的转换时,开发者需要考虑以下...
在IT行业中,有时候我们需要在Java应用中集成第三方控件或者组件来实现特定的功能,比如在SWT(Standard Widget Toolkit)环境中嵌入Word编辑器。这篇博客"SWT中嵌入Word控件应用"可能就是讲述如何在Java SWT界面中...
4. **代码自动完成**:智能提示功能帮助快速输入代码,提高开发效率。 5. **布局管理**:支持多种布局管理器,如GridLayout、RowLayout和 MigLayout等,方便组织控件。 6. **数据绑定**:与JFace Data Binding集成,...
在SWT中,事件监听通常通过实现`org.eclipse.swt.events.Listener`接口或使用匿名内部类来完成。 5. 获取数据下标作为ID: 在描述中提到,此示例使用数据行的下标作为ID进行操作。这可能意味着在表格中,每一行有一...
2. **代码自动生成**:当你在界面上操作时,插件会自动为你生成相应的SWT和JFace代码,减少了手动编写代码的工作量。 3. **实时预览**:开发者可以随时预览界面,确保UI在设计阶段就符合预期。 4. **强大的布局管理*...
因此,开发者可以借助Eclipse的强大功能,如调试器、代码自动完成和丰富的插件生态系统,来更高效地开发SWT应用程序。 总的来说,SWT SDK是Java开发者构建高性能、原生外观GUI应用的利器,通过其与操作系统深度集成...
**SWT教程** ...通过本教程的学习,你将掌握SWT的核心概念,能够使用SWT和JFace构建功能丰富的Java GUI应用程序。实践是检验真理的唯一标准,建议在学习过程中不断尝试编写小程序,以加深理解并提高技能。
8. **使用SWT插件**: 插件安装完成后,你可以在新建项目时看到与SWT相关的模板,也可以在代码编辑器中看到对SWT组件的支持,如代码提示、自动完成等。 9. **学习和实践**: SWT提供了丰富的控件,如按钮、文本框、树...
在设计过程中,SWT Designer会自动生成对应的Java代码,这些代码使用SWT库来实现GUI。这意味着开发者可以专注于业务逻辑,而不用过于关注UI的底层实现细节。同时,由于SWT Designer生成的代码易于理解和修改,因此...
在聊天应用中,JFACE可能被用来实现更复杂的用户界面组件,比如自动完成输入框、树形视图来管理联系人列表等。 **文件列表详解**: 1. `swt-win32-3232.dll`: 这些是SWT库的动态链接库文件,针对Windows 32位平台。...
3. **事件处理**:SWT中的事件处理是通过监听器实现的。例如,你可以添加一个按钮的点击事件监听器,当用户点击按钮时执行特定的代码。这通常通过`addSelectionListener`方法完成,并重写`SelectionListener`接口的`...
SWT 是一个直接与操作系统进行交互的底层库,提供了丰富的控件和组件,而 JFace 建立在 SWT 之上,提供了一层抽象,简化了 GUI 的设计和实现,使其更易于管理和维护。 在 SWT/Jface API 3.4 版本中,我们关注以下几...
设计完成后,SWT Designer会自动生成相应的SWT和JFace代码,这些代码可以直接在你的项目中使用。 值得注意的是,虽然使用注册机可以暂时解决许可问题,但这并不符合软件开发的道德和法律规范。因此,如果你有能力...
在Java编程中,Draw2D库是一个强大的工具,它允许开发者使用SWT(Standard Widget Toolkit)来创建复杂的图形用户界面,特别适用于绘制图形和图表。Draw2D是Eclipse项目的一部分,它提供了一套丰富的API,可以方便地...