用Java SWT实现MSN风格的下拉框

http://tech.ddvip.com   2008年01月10日    社区交流

内容摘要:严格来说如果你的用户对外观要求比较苛刻,那么Swing是首选,因为L&F机制可以确保你做到这一点,另外Swing还有着许多SWT不具备的优点,例如半透明组件、渲染等,但是少数的这些特性用SWT还是可以模拟的,本文就向大家介绍如何通过自定义组件实现MSN风格的下拉框。

  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);

责编:豆豆技术应用

正在加载评论...