科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道用SWT实现MSN风格的下拉框

用SWT实现MSN风格的下拉框

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

SWT一个所谓的优点是它的本地化外观,因为它是通过JNI调用操作系统的组件,从而可以保证外观上适合大多数用户的需求。本文就向大家介绍如何通过自定义组件实现MSN风格的下拉框。

作者:Java桌面技术 来源:BlogJava 2007年11月18日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共4页)

最后添加如下2个方法:

public void select(int index) {
MenuItem[] items = selectorMenu.getItems();
if (index < 0 || index >= items.length) {
throw new ArrayIndexOutOfBoundsException(
"the index value must between " + 0 + "and "
+ (items.length - 1));
}
selectedItem = items[index].getData();
inputText.setText(items[index].getText());
}

select用来设置当前选择第几个项,getSelectedItem返回当前用户选择的数据。

到此为止,ComboSelector已经完成,可以作为API使用了,下面我们编写一个程序测试该组件。

首先编写一个POJO,如下:

package swt.custom;

public class Person {
private String userName;

private String password;

public Person(String userName, String password) {
this.userName = userName;
this.password = password;
}

public String getPassword() {
return password;
}

public String getUserName() {
return userName;
}

@Override
public String toString() {
return userName;
}
}

简单至极的一个类,注意它的toString方法,返回用户名属性作为显示。

接下来通过一个demo看看实际运行效果。

用swt-designer工具创建一个Shell,在createContents方法体内添加如下代码:

final ComboSelector selector = new ComboSelector(this) {
@Override
protected void commit() {
System.out.println("current data is "
+ ((Person) getSelectedItem()).getUserName());
}
@Override
protected void selected(Object object) {
System.out.println(((Person) object).getPassword());
}
};
selector.setBounds(114, 78, 200, 20);
Person[] persons = new Person[] {
new Person("play_station3@sina.com", "111111"),
new Person("rehte@hotmail.com", "222222"),
new Person("yitong.liu@bea.com", "password"),
new Person("使用其他Windows Live ID 登录", "no") };
selector.loadMenuItems(persons);
selector.select(1);

运行结果如下:

图2

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章